2017-09-02 3 views
-2

コードを書き始めていました。キャストする方法をまだ覚えているかどうかを調べるために、演算子の下に赤い線が表示されるまでテストしました。 これは、コンパイラのエラーです:挿入演算子がベクターで動作していないとわからない理由

Error C2679: binary '<<': no operator found which takes a right-hand operand of type 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' (or there is no acceptable conversion) (12) 

私は正直に私はこの問題を解決する方法がわからない文字列/ベクトルを出力に問題がなかったです。誰かが私にこれを修正する方法を教えてもらえますか?あなたがコードに何が間違っているのかを教えてもらえると素晴らしいでしょう。

#include "stdafx.h" 
#include <iostream> 
#include <vector> 
using namespace std; 

int main() 
{ 
    vector<string>hello; 
    hello.push_back("9"); 
    for (auto i : hello) 
     cout << i << " "; <-- The first operator is underlined. Why? 
    return 0; 
} 
+2

これはC++であり、Cタグは含みません! – tilz0R

+0

''を含むようにしてください –

+1

@JakubGawełインクルードヘッダー

答えて

1

あなたはもう一つは、あなたのプログラムに組み込む必要があります。宣言しない

#include <string> 

<iostream>ながら/いくつかの文字列関係のない機能、それらのすべてを定義します。

一部のコンパイラでは、iostreamヘッダーに内部的に文字列が含まれていますが、これは標準では必要ではないため、Visual Studioではこのエラーが発生します。

+0

@純粋に興味のある私はちょうどチェックし、Apple LLVMバージョン8.0.0(clang-800.0.42.1)はを含めずにコードをコンパイルして正常に実行します。そう、はい、この場合VS特有です。 –

+0

@ASMackay - 適切なヘッダーを含めずに 'std :: string'を使うことができる、あるいはコードがエラーであることをコンパイラが伝えるという問題がありますか? –

+0

@BoPersson明確にする。 LLVMは、適切なヘッダーを含めることなく、質問で試行されたstd :: stringの使用を許可しますが、MSVCはエラーを生成します。どちらの行動も問題とみなされるべきかどうかについて私は意見を形成していない。 –

関連する問題