在ifstream输入期间vim文件末尾的新行

Jac*_*ack 0 c++ vim fstream

我为我正在做的作业制作了一些测试文件,但我不确定为什么vim会在文件末尾给我额外的字符.

所以我创建了一个包含A,B和C的"ABC"文件,最后没有新行.所以像

vim ABC

AAAABBBCC
Run Code Online (Sandbox Code Playgroud)

我输出了部分读取代码

 46    while(1) {
 47       ch = infile.get();
 48       if(infile.eof()) {
 49          break;
 50       }
 51       cout << '~' << ch << '~' << (int)ch << '~' << endl;
 52       v[(int)ch]++;
 53    }
Run Code Online (Sandbox Code Playgroud)

我得到了

~A~65~
~A~65~
~A~65~
~A~65~
~A~65~
~B~66~
~B~66~
~B~66~
~C~67~
~C~67~
~
~10~
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我在输入文件中输入换行符

小智 5

最后没有新线

不,你最后有一个换行符.换行符用作行终止符,而不是行分隔符,这就是为什么即使最后一行后跟'\n'也是如此.

:set binary noeol如果你真的需要,你可以让vim编写一个未终止的行,但它不再是vim和C++认为的文本文件.