2015-11-21 147 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; –

相關問題