如何摆脱c ++中的空白行?

Liz*_*rad 2 c++ blank-line

我正在尝试填写文本文档,但是当我这样做时 - 我得到第一行空白.我正在阅读的文本文档如下所示:

3
first fr random 5
second          9
third shazam    2
Run Code Online (Sandbox Code Playgroud)

我已经尝试删除第一个值,所以空白行消失了.所以它相关,但我需要这个价值.

// My code
ifstream in("U2.txt"); 
ofstream out("U2.txt");
int n;
in>>n;
char vardaiStart[n][21];

in.read(vardaiStart[0], 21);

out << vardaiStart[0]<< endl;
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样:

*blank*
first fr random
Run Code Online (Sandbox Code Playgroud)

但我想要的是:

first fr random
Run Code Online (Sandbox Code Playgroud)

所以,在其他项目中,我从现在开始不会使用旧的C,但对于这个项目,我更加[endline]并忽略它,如下所示: in.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

mar*_*co6 7

您的输入文件如下所示:

3[endline]
first fr random 5[endline]
second          9[endline]
third shazam    2[endline]
Run Code Online (Sandbox Code Playgroud)

请注意[endline]我添加的内容:它们可能'\n', '\r\n'取决于生成文件的系统.

你的第一条指令是:

in >> n;
Run Code Online (Sandbox Code Playgroud)

一个 格式化的输入写着:你问到从文件中读取一个整数,所以只有那些能够形成有效整数将被读取字符.

这意味着在该指令之后,文件的剩余部分将是:

[endline]
first fr random 5[endline]
second          9[endline]
third shazam    2[endline]
Run Code Online (Sandbox Code Playgroud)

其余的代码读取原始字节,因此它也将读取第一个[endline](并打印它).

正如评论中建议的那样,你不应该使用变长数组,因为它们不是任何C++标准的一部分(而是C语言的一部分).尝试使用C++ 标准库.