本当にばかげた質問だと思いますが、わかりません。std::string
次のように、改行 (さらに処理するために必要) を含む a を作成しています。
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");