我想在一个特征向量文件存储的特征向量以下列方式为:Istringstream不循行“走”
(标签)(BIN):(值)(BIN ):(值)等
像:
-1 5:0.015748 6:0.0472441 7:0.0393701 8:0.00787402 12:0.0314961 13:0.0944882 14:0.110236 15:0.0472441 20:0.023622 21:0.102362 22:0.110236 28:0.015748 29:0.228346 30:0.125984
正如你可以看到它的保存而没有在他们的值为0的垃圾箱。
我试图阅读他们用下面的代码:
int bin;
int label;
float value;
string small_char; -> change to char small_char to fix the problem
if(readFile.is_open())
while(!readFile.eof()) {
getline(readFile, line);
istringstream stm(line);
stm >> label;
cout << label << endl;
while(stm) {
stm >> bin;
stm >> small_char;
stm >> value;
cout << bin << small_char << value << endl;
}
cout << "Press ENTER to continue...";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
但不知什么原因,标签被正确读取,具有价值第一仓为好,但下面的垃圾桶不被阅读全部。
上述例子线的输出是:发生用于被以下所有行
-1
5:0.015748
5:0.015748
Press ENTER to continue
同样的事情。
我使用的Visual Studio 10,如果该事项反正英寸
一件事(无关你的问题虽然)是,你不应该使用',而(readFile.eof())'(或其他状态功能)。相反,'while(getline(readFile,line))'。 –
顺便说一句,你能请编辑您的问题,包括label','bin','small_char'和'value'的'的声明。 –
@JoachimPileborg'getline'在文件中,而不是'cin'。他只是从'cin'读取暂停。 –