c++是两个相同的字符串

c++ are two strings the same?

本文关键字:字符串 两个 c++      更新时间:2023-10-16

我正在尝试制作一个要求输入密钥的简单软件。

我使用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;

}

通过调用cin.get(),可以使用cin中的第一个字符。您需要将其存储在某个位置,并将其附加到getline的结果中。