#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream inStream("input.txt");
char next;
inStream.get(next);
while(! inStream.eof( ))
{
cout << (int) next << " ";
inStream.get(next);
}
return 0;
}
file&#34; input.txt&#34;:
ab
c
理论上,正好有四个字符&#39;&#39;&#39;&#39;&#39; \ n&#39;&#39; c&#39; (我自己打字)
但事实上,上述计划的输出是:&#39; a&#39;&#39;&#39;&#39; \ n&#39;,&#39; c& #39;,&#39; \ n&#39;。
有人可以帮助我吗?
答案 0 :(得分:1)
我假设您正在编辑linux中的input.txt,而大多数Linux编辑器都会在最后一行结束时使用LF字符。
Windows使用CRLF(\ r \ n,0D 0A)行结尾,而Linux / Unix只使用LF(\ n,0A)。
如果您不希望发生这种情况,请在Windows上编辑文件并将文件复制到Linux并执行相同操作而不更改任何代码。 我用两种方式执行代码并得到低于输出。
在Linux上编辑input.txt
时。
97 98 10 99 10
在Windows上编辑input.txt
并复制到Linux时。
97 98 13 10 99
希望这有帮助。
答案 1 :(得分:0)
不,不能保证文件以\n
结尾 - 或任何字符,甚至是ASCII EOF
字符(这对我没有意义)。文件只是任意字节的流。您可以使用零字节文件,1字节,2字节等,但不确定这些字节是什么。
文件DO通常以\n
结尾,因为它们是在这样的循环中编写的:
for(int i=0;i<numberOfLines;i++) {
fs << getSomeText( i ) << endl;
}
fs.close();
请注意endl
,这会导致每一行(包括最后一行)以\n
结尾。
当然,在Windows上它是\r\n
和老式(OS X之前)Mac OS它是\r
,只是为了尴尬。