需要您的帮助来获取用户输入。
我希望用户键入一个包含空格的字符串。
我不能使用 cin>>variable
,因为两者之间的空间会使问题出错。
如果我使用 getline(cin,string_variable)
它工作正常。但我需要输入两次才能使其正常工作。
cout<<"Enter movie name";
getline(cin, mvName);
getline(cin, mvName);
有没有比这更好的获取用户输入的方法,或者是否有任何其他代码可以输入而不是输入两次 getline?请指教。
最佳答案
当在使用 in >> value
的格式化输入和未格式化的输入之间切换时,例如,使用 std::getline(in, value)
你需要确保你已经消耗了您不感兴趣的任何空白。在您的情况下,先前输入的缓冲区中可能有一个换行符。假设您对前导空格不感兴趣,最简单的方法是使用如下内容:
if (std::getline(std::cin >> std::ws, mvName)) {
process(mvName);
}
顺便说一句,您应该始终检查您的输入是否成功。
关于c++ - 为什么必须键入 getline(cin, string) 两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12723509/