打印新行时std :: string清空

时间:2014-11-14 09:12:40

标签: c++ visual-studio

我有以下代码示例

std::string comment;
for(int i = 0; i<10; i++){
    char buff[500];
    sprintf_s(buff, "%i %e ", intv, dbl);
    comment.append(buff);

    comment.append("random");
    comment =+ '\n'; //c1

    //comment.append("random2"); //c2
}

cout << comment;

现在,如果我运行此代码,输出窗口中不显示任何内容,但如果我注释c1,则显示输出。如果我取消注释c1和c2,则只显示文本“random2”(这只打印一次),

现在我的问题是如何在不破坏代码的情况下为我的代码添加新行。由于性能问题,我无法使用osstream。

感谢。

2 个答案:

答案 0 :(得分:5)

comment =+ '\n';

这真的是

comment = +'\n';

一元+实际上是一个无操作(除了操作数可以从char转换为int),但它是一个有效的运算符。这意味着您只需将charint分配给std::string,将comment设置为&#39; \ n&#39;。

使用operator+=代替推回std::string

答案 1 :(得分:2)

=+不是附加运算符,而是使用带有一元加号的操作数赋值。

您可以将其更改为+=,这是字符串的附加运算符。