web-dev-qa-db-ja.com

文字列を計算できないのはなぜですか?

次のようにcoutstringできない理由:

string text ;
text = WordList[i].substr(0,20) ;
cout << "String is  : " << text << endl ;

これを行うと、次のエラーが表示されます。

エラー2エラーC2679:バイナリ '<<':タイプ 'std :: string'の右側のオペランドをとる演算子が見つかりません(または許容可能な変換がありません)c:\ users\mollasadra\documents\visual studio 2008\projects\barnamec\barnamec\barnamec.cpp 67 barnamec **

これでも機能しないのは驚くべきことです:

string text ;
text = "hello"  ;
cout << "String is  : " << text << endl ;
128
Ata

含める必要があります

#include <string>
#include <iostream>
223
Kiril Kirov

どういうわけかcoutの名前空間stdを参照する必要があります。たとえば、挿入

using std::cout;
using std::endl;

関数定義、またはファイルの上。

11
souser12345

コードにはいくつかの問題があります。

  1. WordListはどこにも定義されていません。使用する前に定義する必要があります。
  2. このような関数の外でコードを書くことはできません。関数に入れる必要があります。
  3. coutまたはendlを使用する前に、文字列クラスとiostreamを使用する前に#include <string>が必要です。
  4. stringcout、およびendlstd名前空間に存在するため、usingディレクティブを使用して最初にスコープに入れない限り、std::をプレフィックスとして付けてアクセスすることはできません。
6
sepp2k

上記の答えは良いですが、文字列を追加したくない場合は、次を使用できます

ostream& operator<<(ostream& os, string& msg)
{
os<<msg.c_str();

return os;
}
1
Maheswar Reddy