2017-03-09 4 views
1
string input; 
    string input2; 
printf("What is your name?\n-->"); 
getline(cin, input); 
std::string nameObj = "{ \"name\": " + '"' + input + '"' + " }"; 
printf("What do you want to send?\n-->"); 
getline(cin, input2); 
std::string jsonObj = "{ \"content\": " + '"' + input2 + '"' + ", \"tts\": true }"; 

入力を求めますが、何もしません。私はinput2とinputのためにそれを入れる必要がありますが、そうではありません。ゲットラインが入力されない

+1

を参照してください。 – user4581301

答えて

0

あなたのコードはほぼ正しいですが、あなたが望んでいない可能性があるのは、JSONの構築と同様にcharchar*を追加することだけです。それはこのように書く:

string input; 
string input2; 
printf("What is your name?\n-->"); 
getline(cin, input); 
std::string nameObj = "{ \"name\": \"" + input + "\" }"; 
cout << nameObj << endl; 
printf("What do you want to send?\n-->"); 
getline(cin, input2); 
std::string jsonObj = "{ \"content\": \"" + input2 + "\", \"tts\": true }"; 
cout << jsonObj << endl; 

http://ideone.com/zY1LFg

char Sは基本的に数値であるので、あなたは不注意代わりに、文字列と文字を連結したポインタ演算を行いました。 C++のビルトイン型は本当に基本的なものです。生の連結もできませんchar*;それを行うには、常にstd::string("...")にラップする必要があります。

連結する代わりに、stringstreamを調べると、JSON文字列を構築しながら、文字列を繰り返し連結することによるコピーを避けることができます。

また、if (!cin.good()) { /* handle error */ }を実行してストリームを読み取った後、cinストリームが正常であるかどうかを確認する必要があります。エラー処理では通常、ストリームの状態をcin.clear()でクリアします。

+0

ありがとうございました! –

+0

これが助けになった場合、upvoteして答えとして受け入れる;) –

+0

私は緑色のチェックマークをクリックしましたが、十分な担当者や何かがないのでアップヴォートを離れることはできません。 –

-1

最初にusing namespace std;その後、ヘッダファイル と下にここに行くとあなたが本当に読んで、操作が失敗し、ストリームを「壊した」かどうかを確認するために書き込み後のストリームの状態をチェックするべきコード https://justpaste.it/14aam

関連する問題