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

时间:2015-11-21 08:31:32

标签: c++ string compare

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

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

}

1 个答案:

答案 0 :(得分:1)

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

的结果中