构造std :: string失败

时间:2013-01-29 07:32:59

标签: c++ string stl

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

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

令人惊讶的是mystr之后是空的。当我进入字符串构造函数时,移交的数据也是空的(因此不包含\n)。这有什么不对?

1 个答案:

答案 0 :(得分:2)

字符串不应为空,其大小应为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");