[英]reading data from files, file name as input
我正在编写一个程序,该程序从作为输入字符串给出的不同文件中读取数据,并将其存储到向量的向量中。 我无法调试读取不同文件的循环的问题。 我已经关闭了ifstream对象,使用空函数清除了字符串...但是当我输入第二个文件名时,它仍然会终止。
我正在复制代码供您细阅。 这是另一个函数调用的函数。 转位器转置矩阵。
vector<vector<float> > store1,store2;
ifstream bb;
string my_string;
float carrier;
vector<float> buffer;
cout<<"enter the file name"<<endl;
getline(cin,my_string);
while (my_string!="end")
{
bb.open(my_string.c_str());
while (!bb.eof())
{
bb >> carrier;
if (bb.peek() == '\n' || bb.eof() )
{
buffer.push_back(carrier);
store1.push_back(buffer);
buffer.clear();
}
else
{
buffer.push_back(carrier);
}
}
bb.close();
buffer.clear();
transposectr1(store1);
storex.push_back(store1[1]);
storey.push_back(store1[0]);
store1.clear();
my_string.empty();
cout<<"done reading the file"<<endl;
cout<<"enter the file name"<<endl;
getline(cin,my_string);
}
我真的不清楚您要做什么。 但是在使用istream时,我有一个黄金法则:
切勿使用eof()函数!
它几乎可以肯定不会按照您的想法去做。 相反,您应该测试读取操作是否成功。
int x;
while( in >> x ) {
// I read something successfully
}
您可能还希望避免使用peek()。 请牢记此建议,重新编写代码。
加
bb.clear();
在bb.close()之后,您可能会得到正确的东西。 bb.close()不会重置我认为的光标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.