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

时间:2013-11-15 09:36:23

标签: c++ vim fstream

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

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

这样的东西
vim ABC

AAAABBBCC

我输出了部分读取代码

 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    }

我得到了

~A~65~
~A~65~
~A~65~
~A~65~
~A~65~
~B~66~
~B~66~
~B~66~
~C~67~
~C~67~
~
~10~

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

1 个答案:

答案 0 :(得分:5)

  

最后没有新行

不,你最后有一个换行符。新行用作行终结符,而不是行分隔符,这就是为什么即使最后一行后跟'\ n'。

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