我尝试从文件中读取char,但是,它总是给我一个或者更多的新行字符(" \ n")。
以下是我的代码:
ifstream file;
file.open(inputfile, ios::binary);
char c;
if(file.is_open()){
while (!file.eof()) {
file.get(c);
if(file.eof()) break;
cout << c << endl;
}
}
file.close();
我的文件只是一行txt文件:
1122aaabbbcccc ***
最后没有换行符。 但是我的代码输出是:
1
1
2
2
a
a
a
b
b
b
c
c
c
c
*
*
*
Program ended with exit code: 0
注意最后有两个新行字符。 我该如何解决这个问题?
答案 0 :(得分:0)
运行您使用给定输入发布的代码会为我生成完全相同的结果。获取输入并将其转换为ASCII代码可得到以下输出
49 49 50 50 97 97 97 98 98 98 99 99 99 99 42 42 42 10 10
最后两个10
是正在打印的换行符
答案 1 :(得分:0)
复制程序并将其输出到文件只会产生一个换行符。
对我来说,看起来你的IDE添加了额外的换行符,将程序输出与消息分开,告诉你程序已经结束。
尝试输出到文件或打印一些没有结束换行符的输出,看看是否是这种情况。
答案 2 :(得分:-1)
cout << c << endl;
嗯,您正在打印新行(std::endl
插入特定于当前操作系统的新行字符)。因此,输出中有新的行字符并不令人惊讶。删除该行的<< endl
部分,您将得到您想要的内容:)
编辑:刚刚注意到你只能在最后删除两个新的行字符。在这种情况下:行&#34;程序以退出代码结束:0&#34;,以及之前的两个新行代码根本不会由您的程序打印(或者至少不是来自您的&#39;我发布在这里) - 我甚至测试了你的代码,它打印出你想要的东西。
如果它是由执行程序的任何内容(例如您的IDE)打印的,那么除了在没有该程序的情况下运行之外,您无法对此做任何事情。但是,如果它是由您未在此处发布的代码中的某些内容引起的,则只能通过更改代码的这一部分来修复它。现在有一种方法可以防止打印某些内容而不会阻止对cout
的特定调用(或者用于打印该文本的任何内容)。