0

このプログラムを実行すると、以下のエラーが表示されます s<<"\""<<string<<"\""

#include <string>
#include <iostream>
#include <sstream>
#include <cstdlib>

using namespace std;
string str="abc";
stringstream s;
s<<"\""<<string<<"\"";
cout<<(s.str().c_str());

エラー: -Wfatal-errors により、'<<' トークンのコンパイルが終了する前に、コンストラクタ、デストラクタ、または型変換が必要でした。

http://codepad.org/KuyMQg3x、エラーのあるオンライン コードは次のとおりです。

4

3 に答える 3

2
#include <string>
#include <iostream>
#include <sstream>


int main() {
    using namespace std;
    string str="abc";
    stringstream s;
    s<<"\""<<str<<"\"";
    std::cout<<(s.str().c_str());

}

コメントで示唆されているように、文字列をstrに変更すると正常に機能します。

于 2012-10-21T00:55:27.303 に答える
0

関数内ではなく、トップレベルでコードを実行しようとしています。これはあなたのプログラムがどのように見えるべきかです:

#include <string>
#include <iostream>
#include <sstream>
#include <cstdlib>

using namespace std;

int main() {
    string str="abc";
    stringstream s;
    s<<"\""<<str<<"\"";
    cout<<(s.str().c_str());
}
于 2012-10-21T00:54:32.753 に答える
0

主な機能が不足しているようです。これを試して:

#include <string>
#include <iostream>
#include <sstream>
#include <cstdlib>

using namespace std;

int main() {
    string str="abc";
    stringstream s;
    s<<"\""<<str<<"\"";
    cout<<(s.str().c_str());
}

C++ランタイムは、プログラムを開始するために実行する関数を必要とします。それは常に実行されます(int main()またはint main(int argc, char* argv)

于 2012-10-21T00:54:50.227 に答える