【发布时间】:2016-04-07 01:37:49
【问题描述】:
所以正如标题所说,我正在尝试从文件中读取并将字符保存到带有空格的二维数组中,但它卡在了 do while 循环和文件的最后一个字符中。对于如何解决这个问题,有任何的建议吗?我考虑过使用 eofbit 但我想不通然后我尝试通过 || 退出 do while 循环它与 eof 没有工作。它似乎只是挂在文件的最后一个字母上。提前感谢您的建议
char ch[100][100];
int row_count =0;
int col_count = 0;
int col[100];
char temp;
bool exit = false;
ifstream infile("data.txt");
if( infile.is_open())
{
while(!infile.eof())
{
do
{
infile.get(temp);
char[row_count][col_count] = temp;
col_count++;
}while(temp != '\n' || !infile.eof());
col[row_count] = col_count;
row_count++;
col_count= 0;
}
}
for(int i = 0; i <= 2; i++)
{
for(int j=0; i <= col[i]; j++)
{
cout << ch[i][j];
}
cout << endl;
}
return 0;
}
【问题讨论】:
-
不要使用 while (!infile.eof()) 参见此处:stackoverflow.com/questions/5605125/… 尝试使用 while(infile.get(temp)) 代替。另外为什么两个嵌套循环具有相似的条件?只需添加一个 if 语句
-
使用流的
getline方法会简单得多 -
请给最有帮助的答案打分。