2015-11-21 105 views
-1

我试图让一个简单的软件被要求输入一个密钥。C++是两个字符串相同吗?

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

}

+4

请多花点努力,正确地设置你的解释和代码。 –

+2

'for'循环还有什么?目前,它似乎没有末端大括号,因此代码中可能有任何内容。请将代码写入MCVE([如何创建一个最小,完整和可验证的示例?](http://stackoverflow.com/help/mcve)) - 这样做可以帮助我们比当前更好的帮助所示。 –

+0

对不起,代码不遵循MCVE,这是第一次在这里问问题。谢谢 –

回答

1

通过调用cin.get(),你消耗从cin第一个字符。您需要将其存储在某个地方,并将其附加到getline的结果中。

+0

谢谢先生,我保持cin.get();然后在user_input的第一个位置添加它,并且它工作, c = cin.get(); \t \t如果(C == '\ n') \t \t { \t的cout << “\ n所有条目\ n!”; \t \t break; \t \t} \t \t别的 \t \t函数getline(CIN,USER_INPUT); \t \t user_input = c + user_input; –

相关问题