-2
我正在嘗試讀取文件並將數據存儲在結構數組中。 這是csv
(逗號分隔值)格式,帶有4個浮點值和一個字符串。使用ifstream從文件讀取時編譯時出錯
1.2,2.3,3.4,abc
2.3,3.4,4.5,xyz
我已經寫了下面這段代碼是相同的,但不過我得到一個編譯錯誤
readfile.c++: In function ‘void read_data()’:
readfile.c++:38:7: error: no match for ‘operator>>’ (operand types are ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ and ‘data’)
value >> da[i];//sep_len << sep_wid << pet_len << pet_wid << type;
^
readfile.c++:16:10: note: candidate: std::istream& operator>>(std::istream&, data&)
istream& operator>>(istream& ins, data& dat)
^
readfile.c++:16:10: note: no known conversion for argument 1 from ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ to ‘std::istream& {aka std::basic_istream<char>&}’
我的代碼如下。
include<iostream>
#include<fstream>
#include<string>
#include<sstream>
using namespace std;
struct data
{
string sep_len;
string sep_wid;
string pet_len;
string pet_wid;
string type;
};
istream& operator>>(istream& ins, data& dat)
{
return (ins >> dat.sep_len
>> dat.sep_wid
>> dat.pet_len
>> dat.pet_wid
>> dat.type);
}
void read_data()
{
struct data da[150];
string line;
int i=0;
string name="iris.data";
ifstream input(name.c_str());
while((getline(input,line)))
{
stringstream iss(line);
string value;
while (getline(iss,value,','))
{
value >> da[i];//sep_len << sep_wid << pet_len << pet_wid << type;
i++;
}
}
}
int main()
{
read_data();
return 0;
}
你爲什麼不能理解你的編譯器的錯誤信息?這很清楚! –
你打算如何在每個'data'的* five *字符串中分割三個浮點數+一個字符串? – dasblinkenlight
[如何使用逗號分隔值讀寫文本文件/從文本文件中讀取/寫入](http://stackoverflow.com/questions/1474790/how-to-read-write-into-from-text-file-with -逗號分隔值) – Rndp13