【问题标题】:I can't add a new line to c++ string我无法在 C++ 字符串中添加新行
【发布时间】:2011-05-06 21:33:21
【问题描述】:

如何在 c++ 字符串中添加新行?我正在尝试读取文件,但是当我尝试附加 '\n' 时它不起作用。

std::string m_strFileData;
while( DataBegin != DataEnd ) {
    m_strFileData += *DataBegin;
    m_strFileData += '\n';
    DataBegin++;
}

【问题讨论】:

  • “它不起作用”是什么意思?你的电脑会融化吗?你的狗喝你所有的啤酒吗?什么?
  • 如果您使用 Visual Studio 进行调试,您可能无法在调试器中正确看到它。
  • @dalle - 好点,使用文本可视化器查看所见即所得的版本
  • @dreamlax 我已经明确表示附加 \n 不起作用,@dalle 我需要在下一步为我的解释器添加新行,它需要新行但不起作用。
  • 你的意思是,如果你把车送到修理工那里,然后说“我想开车,但它不工作”,你会期望他们知道如何修理它?更详细地描述您的问题。通过什么观察你确定你的代码有问题? DataBeginDataEnd 是什么数据类型。您如何检查/显示字符串(如果它显示在 GUI 元素中,该元素是否支持多行)?我们无法读懂你的想法。说“它不起作用”就像公牛上的山雀一样有用。

标签: c++ newline escaping


【解决方案1】:

如果您有很多行要处理,使用stringstream 可能会更有效。

ostringstream lines;

lines << "Line 1" << endl;
lines << "Line 2" << endl;

cout << lines.str();   // .str() is a string

输出:

Line 1
Line 2

【讨论】:

    【解决方案2】:

    对于迟到的答案感到抱歉,但我遇到了类似的问题,直到我意识到 Visual Studio 2010 char* 可视化器忽略了 \r\n 字符。他们完全被忽略了。

    注意:我所说的可视化器是指您将鼠标悬停在char*(或string)上时看到的内容。

    【讨论】:

      【解决方案3】:

      只是猜测,但也许您应该将字符更改为字符串:

       m_strFileData += '\n';
      

      变成这样:

       m_strFileData += "\n";
      

      【讨论】:

      • += 运算符支持两种方式。
      【解决方案4】:

      这将在每个字符或字符串之后附加一个换行符,具体取决于 DataBegin 的实际类型。您的问题不在于您给出的代码示例。如果你给出你的预期和实际结果,以及变量使用的数据类型,它会更有用。

      【讨论】:

        【解决方案5】:

        试试这个:

        ifstream inFile;
        inFile.open(filename);
        std::string entireString = "";
        std::string line;
        
        while (getline(inFile,line))
        {
           entireString.append(line);
           entireString.append("\n");
        }
        

        【讨论】:

          猜你喜欢
          • 2016-03-09
          • 2017-11-28
          • 2016-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-03
          • 2021-01-07
          • 2010-09-18
          相关资源
          最近更新 更多