我正在尝试制作一个简单的软件,要求输入密钥。
我使用fstream
打开包含数字列表的txt
文件。我输入了string array import_n
,然后我定义了一个字符串,比如user_input
。我使用getline(cin, user_input)
来获取用户输入。 if user_input == import_n
表示用户输入了正确的数字,并且比较成功。
这很好用。问题是,当程序要求用户输入数字并按下回车键时,它会继续,就像我输入了正确的数字一样。有办法解决这个问题吗?
注意:
我试过
if (cin.get() == '\n') {continue;}
但问题是
1:当用户输入号码并按下输入时,即使号码正确,也会重复输入
2:
if(cin.get() == '\n'){cout <<"you press enter";}
else getline(cin, user_input);
这里的问题是它跳过user_input
代码:
string user_input = "";
string g;
string il_[ar_n +1];
string wa[na];
string w1 ="array";
string w2 ="_";
for (int n = 1, i = 0; i < na; i++, n++)
{
stringstream c;
c << n;
wa[i] = c.str();
}
string w4 =".txt";
string w5 ;
cout << "enter number : " ;
getline(cin, g);
//cin.ignore();
getline(cin, user_input );
for (int ifo =0 ; ifo< na ; ifo++) // na -1
{
w5 = w1 + w2 + wa[ifo] + w4;
ifstream inp(w5);
if (!inp)
{
continue;
}
int i = 0;
while (!inp.eof())
{
getline(inp, il_[i]);
i++;
}
i = i-1;
int ic =0 ;
while (ic < i+1)
{
if (user_input == il_[ic])
{
f = true;
break ;
}
else
ic++;
}
if (f)
{
inp.close();
return true;
}
inp.close();
}//end for loop
cout <<"\ninvalid number!";
return false;
}
答案 0 :(得分:1)
通过调用cin.get()
,您将使用cin
中的第一个字符。您需要将其存储在某处并将其附加到getline
。