我担心这是一个非常愚蠢的问题,但我不明白。我正在构建一个std::string
,其中包含换行符(需要进一步处理):
std::string mystr=std::string("\n")
令人惊讶的是mystr
之后是空的。当我进入字符串构造函数时,移交的数据也是空的(因此不包含\n
)。这有什么不对?
答案 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";
}
输出1
和0
。
令你困惑的是这个表达式中的复制省略或移动构造:
std::string s1 = std::string("\n");
无论如何,通常会这样写:
std::string s1("\n");