-3

恐怕这是一个非常愚蠢的问题,但我不明白。我正在构建一个std::string包含换行符(需要进一步处理)的方式:

std::string mystr=std::string("\n")

之后令人惊讶mystr的是空的。当我进入字符串构造函数时,传递的数据也是空的(所以不\n包含)。这里有什么问题?

4

1 回答 1

2

字符串不应该为空,它应该有 size 1。是什么让你相信它是空的?

#include <iostream>
#include <string>

int main()
{
  std::string s1 = std::string("\n");
  std::string s2;
  std::cout << s1.size() << "\n";
  std::cout << s2.size() << "\n";
}

输出10

可能让您感到困惑的是此表达式中的复制省略或移动构造:

std::string s1 = std::string("\n");

无论如何,哪一个通常会这样写:

std::string s1("\n");
于 2013-01-29T07:36:09.123 回答