Getline没有得到输入

时间:2017-03-09 02:32:46

标签: c++

    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,但它没有。

2 个答案:

答案 0 :(得分:1)

您的代码几乎是正确的,唯一可能无法执行的操作是将char添加到char*,就像在JSON构造中一样。写得像这样:

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字符串,同时避免重复连接字符串导致的复制。

通过cin读取后,您还应该检查if (!cin.good()) { /* handle error */ }流是否正常。错误处理通常涉及使用cin.clear()清除流的状态。

答案 1 :(得分:-1)

首先包括使用namespace std;下面的头文件 然后去这里看看代码 https://justpaste.it/14aam

相关问题