C++ Getline问题

C++ Getline问题,c++,C++,我有以下代码: system("CLS"); string title; string content; cout << "Get title." << endl; getline(cin,title); cout << "Get content." << endl; getline(cin,content); 系统(“CLS”); 字符串标题; 字符串内容; 不能如果你有一个cin>>的东西 例如,将输入转换为整数。当cin>>myintvar

我有以下代码:

system("CLS");
string title;
string content;
cout << "Get title." << endl;
getline(cin,title);
cout << "Get content." << endl;
getline(cin,content);
系统(“CLS”);
字符串标题;
字符串内容;

不能如果你有一个
cin>>的东西系统()之前先调用code>

例如,将输入转换为整数。当
cin>>myintvar时
(或类似)然后将整数放入
myintvar
,并在流中发送“\n”。
getline
拾取
\n
作为输入行结束的指示,因此它实际上被“跳过”

cin>
更改为
getline()

或者调用
cin.ignore()
来获取
'\n'
(或者更好的方法是调用
cin.ignore(std::numeric\u limits::max(),'\n');
来刷新输入缓冲区,但确保在这个过程中不会丢弃有价值的输入)。

如果你有
cin>>系统()之前先调用code>

例如,将输入转换为整数。当
cin>>myintvar时
(或类似)然后将整数放入
myintvar
,并在流中发送“\n”。
getline
拾取
\n
作为输入行结束的指示,因此它实际上被“跳过”

cin>
更改为
getline()

或者调用
cin.ignore()
获取
'\n'
(或者更好的方法是调用
cin.ignore(std::numeric\u limits::max(),'\n');
刷新输入缓冲区,但确保在这个过程中不会丢弃有价值的输入)。

我敢打赌,您有类似于菜单的选项(作为数字类型)然后你试着读台词

发生这种情况的原因是,在std::cin读取某些值后,剩余的“\n”尚未处理,解决方案是包含
#include
,然后放入
std::cin.ignore(std::numeric_limits::max(),“\n”);
在您的
getline(cin,标题)之前;

我敢打赌,你有一个类似于菜单的选择选项(作为数字类型),然后你就可以试着读这些行了

发生这种情况的原因是,在std::cin读取某些值后,剩余的“\n”尚未处理,解决方案是包含
#include
,然后放入
std::cin.ignore(std::numeric_limits::max(),“\n”);
在您的
getline(cin,标题)之前;

这是因为当您使用getline()时,它会忽略行尾的换行符并将其输入到输入队列中,因此当下次调用getline函数时,它会遇到上一个getline()丢弃的换行符,因此它会将其视为输入字符串的结尾。这就是为什么它不接受你的任何意见。你可以用这样的东西

getline(cin,title);
cin.get();

希望这能奏效

这是因为当您使用getline()时,它会忽略行尾的换行符并将其输入到输入队列中,因此当下次调用getline函数时,它会遇到前一个getline()丢弃的换行符,因此它会将其视为输入字符串的结尾。这就是为什么它不接受你的任何意见。你可以用这样的东西

getline(cin,title);
cin.get();

希望这能奏效

为什么不简单地编写
cin>>标题
?@TAMER先生如果标题中有空格,那么执行
cin>
只会将字符增加到一个空格。你好,erkses,欢迎使用Stack Overflow。感谢您发布代码,以便我们可以看到您正在谈论的内容。以后,在发布代码时,请考虑将程序还原到演示问题的最小完整示例。在这种情况下,我担心您排除了对回答您的问题至关重要的信息。有关如何以及为什么发布完整程序的更多信息,请参阅。为什么不简单地编写
cin>>标题
?@TAMER先生如果标题中有空格,那么执行
cin>
只能将字符添加到空格中。您好,erkses,欢迎使用堆栈溢出。感谢您发布代码,以便我们可以看到您正在谈论的内容。以后,在发布代码时,请考虑将程序还原到演示问题的最小完整示例。在这种情况下,我担心您排除了对回答您的问题至关重要的信息。有关如何以及为什么发布完整程序的更多信息,请参阅。getline之前忽略(cin,标题);很好,谢谢@埃尔克斯:没问题。您将再次遇到此问题,请注意:)在getline之前忽略(cin,title);很好,谢谢@埃尔克斯:没问题。您将再次遇到此问题,请注意:)不,
getline
读取整行并丢弃换行符。这里的问题是其他的。不,
getline
读取整行并丢弃换行符。这里的问题是别的。