在询问用户输入时,我无法弄清楚如何使用"默认值".我希望用户能够只按Enter键并获取默认值.考虑下面这段代码,你能帮帮我吗?
int number;
cout << "Please give a number [default = 20]: ";
cin >> number;
if(???) {
// The user hasn't given any input, he/she has just
// pressed Enter
number = 20;
}
while(!cin) {
// Error handling goes here
// ...
}
cout << "The number is: " << number << endl;
Run Code Online (Sandbox Code Playgroud)
Fre*_*abe 12
用于std::getline从中读取一行文本std::cin.如果该行为空,请使用您的默认值.否则,使用a std::istringstream将给定字符串转换为数字.如果此转换失败,将使用默认值.
这是一个示例程序:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
std::cout << "Please give a number [default = 20]: ";
int number = 20;
std::string input;
std::getline( std::cin, input );
if ( !input.empty() ) {
std::istringstream stream( input );
stream >> number;
}
std::cout << number;
}
Run Code Online (Sandbox Code Playgroud)
这可以作为已接受答案的替代方案.我想说std::getline有点过分了.
#include <iostream>
int main() {
int number = 0;
if (std::cin.peek() == '\n') { //check if next character is newline
number = 20; //and assign the default
} else if (!(std::cin >> number)) { //be sure to handle invalid input
std::cout << "Invalid input.\n";
//error handling
}
std::cout << "Number: " << number << '\n';
}
Run Code Online (Sandbox Code Playgroud)
这是一个包含三种不同运行和输入的实时样本.