输出流文件未添加新行

时间:2016-05-24 17:20:58

标签: c++ c

这个小问题出现在我的代码片段中:

s = strcat(strdup(aLineOfText.data()), "\n");
outputFile.write(s, aLineOfText.length()+1);

我将换行符添加到字符串的末尾并将其写入文本文件,但换行符似乎被省略了。我基本上每次尝试在新行上添加一行文本,但它只是附加到同一行。有什么我想念的吗?

2 个答案:

答案 0 :(得分:0)

好吧,strdup会创建一个字符串的副本,而strcat在这个副本上运行,而不是在原始副本上运行。因此,您不会更改字符串aLineOfText,而是更改您之后无法访问的临时副本。试试这段代码:

char* temp = new char[aLineOfText.length()+2];
strncpy(temp, aLineOfText.data(), aLineOfText.length()+2);
strcat(temp, "\n");

如果要将换行符附加到现有字符串,则必须省略strdup并确保写入的字符串足够大(例如,至少有两个字符空格,换行符和空值)。

答案 1 :(得分:0)

知道了,对此有太多考虑......

我只是,除了一些建议外,还必须添加回车符来完成工作......

outputFile.write(aLineOfText.data(),aLineOfText.length()); outputFile<<为 “\ r \ n” 个

谢谢!