c#中的新行字符

Amm*_*sfi 10 c# newline

我编写了这段代码来计算文本文件中的字符数:

sr.BaseStream.Position = 0;
sr.DiscardBufferedData();
int Ccount = 0;
while (sr.Peek() != -1)
{
  sr.Read();
  Ccount++;
}
Run Code Online (Sandbox Code Playgroud)

但将此代码应用于文件后包含:

1
2
3
4
5
6
7
8
9
0
Run Code Online (Sandbox Code Playgroud)

Ccount = 30 ???? 为什么?我在我的Macbook上的虚拟盒上使用Windows Xp所使用的程序:Microsoft Visual Basic 2010.

Sin*_*ian 15

在Windows中,每个新行包含两个字符\r\n.您有10行,每行有1个可见字符和2个新行字符,最多可添加30个字符.

如果您在Mac或Unix/Linux中创建了文件,则会产生不同的结果(20个字符).因为Unix只使用\n而Mac只\r用于新行.

您可以使用一些编辑器(如Notepad ++)向您显示新行字符,甚至可以在不同模式(DOS/Unix/Mac)之间切换.


Ric*_*dle 14

你一次只读一个字符,每行包含三个字符:

  • 一位数
  • 一个回车(\r)
  • 一个换行符(\n)

(Windows使用\r\n它作为换行符.您在Mac上的VM中运行的事实不会影响它.)