恐怕这是一个非常愚蠢的问题,但我不明白。我正在构建一个std::string
包含换行符(需要进一步处理)的方式:
std::string mystr=std::string("\n")
之后令人惊讶mystr
的是空的。当我进入字符串构造函数时,传递的数据也是空的(所以不\n
包含)。这里有什么问题?
字符串不应该为空,它应该有 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";
}
输出1
和0
。
可能让您感到困惑的是此表达式中的复制省略或移动构造:
std::string s1 = std::string("\n");
无论如何,哪一个通常会这样写:
std::string s1("\n");