#include <iostream>
#include <string>
using namespace std;
int main()
{
int num;
cin >> num;
string s;
getline(cin, s);
cout << s << " " << num << endl;
return 0;
}
在这段代码中,如果我输入 3 并按回车键,则 s 将接受一个空字符串。
1)如果是第一个字符作为换行符,那么有没有先把整数作为输入再把line作为输入的解决方案?
2) 如果我的输入是 4567artyu 那么它如何决定 7 必须进入 s 还是 num ?
最佳答案
我建议您始终阅读用户输入的完整行。它会引起最少的困惑。
- 征求意见。
- 使用
std::getline
读取一行输入。 - 如果您不想要一个字符串,而是一个整数,请使用
std::stoi
或(更一般)boost::lexical_cast
安全地将输入转换为所需的目标类型。这是您发现糟糕的输入并向用户提示的地方。
我不认为很多用户在提示输入数字时会期望输入 42bananas
会被接受为 42 并且 bananas
部分会被“记住”为以后。这很可能是打字错误,用户会很乐意被要求更正。
关于C++ : Getline Function Mechanics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31815469/