我应该强制用户输入一个数字然后输入一个空格然后输入一个字符串,如果格式错误,我应该终止程序。当我使用cin时,编译器忽略了空格,并认为字符串的第一个字符是他应该检查的字符,以确保用户输入空格,因为第一个字符始终不是他终止的空格。 我该怎么办 ?!
答案 0 :(得分:1)
使用std::getline
。如果您需要进一步的帮助,请务必发布代码示例以证明问题,否则您将无法获得具体答案。
示例:
#include <string>
#include <iostream>
int main()
{
std::string input;
std::cout << "Please enter a number and a string, separated by a space:";
std::getline(std::cin, input);
// Code to validate input
}
答案 1 :(得分:1)
我假设“当我使用cin”时,你的意思是>>
运算符。从带有istream
的{{1}}读取是格式化的输入函数,这意味着输入是为您预先格式化的,其中一个效果是默认跳过空格。
有几种方法可以解决您的问题,包括一次读取一个字符(使用无格式输入函数,例如>>
)或一次读取一行并解析这条线。
或者,您可以使用std::istream::get
操纵器关闭空格字符的跳过:
noskipws