说我有类似int s
和cin >> s
的内容。是否有一种简单的方法可以测试's'的用户输入是否为空白而不使用isspace
,这会导致首先将该int转换为字符串,然后在测试后再次返回int。
答案 0 :(得分:3)
使用std::getline
函数将输入的整行作为std::string
,然后解析该行,这可以像使用std::stoi
一样简单在C ++ 11中:
std::string input;
std::getline(input, input, std::cin);
int const s = std::stoi(input);
它将检查输入的有效性,如果不能执行转换则抛出异常。此外,将输入作为std::string
提供,您可以执行任何您喜欢的检查,并且检查字符串中特定字符是否存在是微不足道的。
答案 1 :(得分:1)
如果你这样做: -
int s;
cin >> s;
进入空白时甚至不会返回。用户必须输入一些非空格字符。