-3

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

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 に答える