我正在尝试创建一个while循环,只要从文件中取出的字符串不为空就运行。我需要用空格分隔字符串并保存信息以备将来使用,所以我将子字符串放入一个数组中,然后将其从实际数组中删除。但是,当我运行程序时,我不断收到错误消息,或者只打印空白区域。 I added a picture of the file I'm using and of the error message I'm getting
fstream myfile;
string line;
string info[10000];
int i=0, pos;
myfile.open("bfine_project1_input.txt");
//Check
if (myfile.fail()){
cerr << "Error opening file" << endl;
exit(1);
}
if (myfile.is_open()){
while (getline (myfile,line)){
while(line.size() !=0){
pos = line.find(" ");
info[i]= line.substr(0,pos);
i++;
cout << info[i] << endl;
//line.erase(0, pos);
}
}
}
答案 0 :(得分:0)
我可以看到两个问题。
1 - 你增加&#39;我&#39;打印前(将值存储在info [0]和打印信息[1]中)
第二 - 擦除你使用的方式赢得了擦除空间&#34; &#34;,所以find(&#34;&#34;)将从第2次开始返回位置0。
一些调整可以解决这个问题。请参阅以下代码:
重要提示:编写代码的方式需要在行尾添加空格!
string line;
string info[10000];
int i=0, pos;
line = "1325356 134 14351 5153613 1551 ";
while(line.size() !=0){
pos = line.find(" ");
info[i]= line.substr(0, pos);
cout << i << " " << info[i] << endl;
line.erase(0,pos+1); //ERASE " " too!
i++;//increment i only after everything is done!
}