我有问题。当我使用以下文本文件运行此代码时:
car
3
4
-8 7
-+--
-7 1
我尝试打印它,打印到7号,最后2个字符没有打印
有人能帮帮我吗? 感谢
string srow;
string scolumn;
int row = 0;
int column = 0;
string gametype;
ifstream myReadFile;
myReadFile.open("text.txt");
if (myReadFile.is_open())
{
getline(myReadFile, gametype);
getline(myReadFile, srow);
getline(myReadFile, scolumn);
row = stoi(srow);
column = stoi(scolumn);
for (i = 0; i <row; i++)
{
for (j = 0; j <column; j++)
{
myReadFile.get(ch);
printf("%c",ch);
}
}
}
myReadFile.close();
return 0;
}
答案 0 :(得分:0)
如果ch是char ...你正在跳过行尾。你的文件确实是:
car<\n>
3<\n>
4<\n>
-8 7<\n>
-+--<\n>
-7 1<\n>
&LT; \ n&GT;是行尾字符,所以..如果你读4个字符×2行(8个字符)..你正在阅读:
12345678
-+--E-7
^
|
----- End of line (</n)
您可以使用getline来避免行尾或在句子中读取它,但要小心,Windows / DOS(\ r \ n)和Unix(\ n)不具有相同的{{3} }为行尾。
答案 1 :(得分:0)
输出错误,因为每行5
字符不是4
。你没有考虑行尾的\n
。最后两个字符未打印,因为从两行以上打印了两个\n
。要做的更改是:
Replace
for (j = 0; j <column; j++)
with
for (j = 0; j <= column; j++)