【发布时间】:2014-01-25 03:09:01
【问题描述】:
我是新来的代码和这个网站,所以如果我忽略了一些明显的东西,请原谅我。我一直在尝试用 C++ 编写一个简短的小游戏,我需要接受用户输入。我想接受一个以上的词,所以我的书推荐的cin>> 命令是正确的。我通过研究发现的最好的东西是getline(cin,var); 命令。我可以让它在小规模测试中轻松工作,但是当我将它实施到我的 500 线游戏中时,它永远不会工作。它会直接跳过那段代码而不等待用户输入,并将变量设置为空白。显然我不会包含整个代码,但这里有问题,还有我的标题。
#include <cstdlib>
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
string poemend;
int heading;
int poem()
{
system("CLS");
cout<<"This poem is almost done, you just can't seem to find the perfect last word.\n";
cout<<"You can see several of your discarded endings. Most recently, 'pain'.\n\n";
cout<<"How about another go?\n>";
getline(cin,poemend);
system("CLS");
cout<<"The Prophet's old parrot spoke much of all things,\n";
cout<<"but when asked about love, squawked only ";
cout<<poemend<<" .\n\n";
Sleep(6000);
cout<<"You decide it could still use some work";
Sleep(3000);
heading = 6;
}
再一次,如果我把它放到一个新的空白页面中,这会非常有效,所以我真的不确定是什么阻碍了。我很乐意回答有关代码的任何问题,并在需要时发布更多有用的信息。非常感谢您花时间阅读本文!
【问题讨论】:
-
请使用一点缩进
-
您没有向我们展示的代码是问题所在。
-
您在这里向我们展示的代码没有问题。你能发布更多与流有关的代码吗?
-
如果您在
getline之前的任何时候使用cin,则行尾仍将等待读入,getline将很乐意接受它而无需等待更多输入。 -
@MarkRansom 不确定我是否理解您的意思 -
std::getline不采用或提取新行(默认情况下)。它使用它作为输入的分隔符。因此,如果换行符仍然留在流的开头,std::getline将变为不可操作,直到它被丢弃。