gpt4 book ai didi

c++ - 从用户获取输入时出现问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:02:06 25 4
gpt4 key购买 nike

代码如下:

cout << "Please enter the file path: ";
string sPath;
getline(cin, sPath);
cout << "Please enter the password: ";
string sPassword; getline(cin, sPassword);

问题是,当我运行它时,它显示“请输入文件路径:”,然后显示“请输入密码:”,然后等待密码。它似乎完全跳过了第一个 'getline()'。

后期编辑:是的,之前做了一些输入操作。

int iOption = 0;
while (iOption == 0)
{
cout << "(E/D): ";
switch (GetCH())
{
case 'E':
iOption = 1;
break;
case 'e':
iOption = 1;
break;
case 'D':
iOption = 2;
break;
case 'd':
iOption = 3;
break;
default:
break;
}
}

还有 GetCH() 的代码,以防有人问起。

char GetCH ()
{
char c;
cin >> c;
return c;
};

最佳答案

看起来为 GetCH 输入的行的其余部分在您调用 getline 时仍保留在缓冲区中,即至少一个 \n 这就是您在第一个 getline 调用中阅读的内容。该程序不会阻塞等待用户输入,因为 getline 请求可以由仍在排队等待读取的部分行来满足。

考虑修改您的 GetCH 函数以读取整行。

例如类似的东西(恐怕完全未经测试):

int GetCH()
{
std::string inputline;

// Read until error or we receive a non-empty line
while( std::getline(std::cin, inputline) && inputline.empty() )
{
}

return inputline.empty() ? EOF : inputline[0];
}

关于c++ - 从用户获取输入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3537110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com