1

重複の可能性:
cin>>stringがVisualC++ 2010で機能しないのはなぜですか?

私が書いた最初のプログラムは、Visual C ++でのコンパイルを拒否し、「>>」演算子がistreamに対して定義されていないことを訴えているようです。

注意深く調べたところ、正しいように見えたので、g ++で確認したところ、正常にコンパイルされました(-Wallによる警告はありません)。

では、なぜそれはg ++で動作するのに、VisualC++では動作しないのでしょうか。

プログラムは次のとおりです。

#include <iostream>
#include <list>

int main() {
    std::list<std::string> list;
    std::string str = "";
    std::cin >> str;
    while (str.compare("q") != 0) {
        list.push_back(str);
        std::cin >> str;
    }

    std::cout << "You entered: \n";

    for (std::list<std::string>::iterator i = list.begin(); i != list.end(); i++) {
        std::cout << *i << std::endl;
    }
    return 0;
}

Visual C++用に記述されたC++コードとg++用に記述されたC++コードは、ほとんどの状況でほぼ同じだと思っていました。

それらはどれほど異なっていますか、これらの種類の問題が発生する頻度はどれくらいですか、そして私がこれらの違い/落とし穴のいくつかを見つけることができる場所を知っていますか?

4

1 に答える 1

3

コンパイラが異なれば、ヘッダーも異なり、内部には他のヘッダーが含まれます。gccにはおそらく<string>内部が含まれていますが<iostream>、 VisualStudioには<iostream>含まれていません<string>。入れてみてください:

#include <string>

あなたの他のインクルードと一緒にトップに。<string>を定義するヘッダーファイルですoperator>>(std::istream, std::string)(つまり、<string>「公式に」実行する必要のある機能を提供するヘッダーですstd::cin >> str;)。

于 2013-01-27T04:02:37.983 に答える