我正在做c ++入门练习,并尝试做一个接收单词和一行的程序。如果当我要求一个单词(带有cin)时我按下回车键,那么程序只是跳过下一行并且要求换行(使用getline)...如果我在cin中写了一个完整的短语(如& #34;你好美丽的世界")然后第一个词("你好")由cin和其他两个词("美丽的世界")被getline捕获。 / p>
据我所知,在cin中,当我输入一个空格时,它会切断输入。我不明白的是两件事:
1.-为什么如果我用输入结束输入(在cin中)它会跳过所有剩下的代码? (有解决方案吗?)
2.-为什么如果我在cin中写一个完整的短语,它会在执行之前将另外两个单词分配给getline cout<< "输入一行" << ENDL; ?
THX!抱歉,我的英文C:
#include <iostream>
#include <string>
using namespace std;
int main() {
string word, line;
cout << "enter a word" << endl;
cin >> word;
cout << "enter a line" << endl;
getline(cin, line);
cout << "your word is " << word << endl;
cout << "your line is " << line << endl;
return 0;
}
答案 0 :(得分:1)
两个输入之间需要cin.ignore():因为你需要在两者之间刷新换行符。
#include <iostream>
using namespace std;
int main() {
string word, line;
cout << "enter a word" << endl;
cin >> word;
cout << "enter a line" << endl;
cin.ignore();
getline(cin,line);
cout << "your word is " << word << endl;
cout << "your line is " << line << endl;
return 0;
}
对于你的第二个答案,当你在第一个cin
中输入整个字符串时,它只需要一个单词,其余的单词由getline
执行,因此你的程序将在不接受来自{{{{}}的输入的情况下执行1}}