2015-06-13 63 views
1

我看到了類似的問題我的:C++ string variables with if statementsC++字符串輸入作爲if/else語句條件

他的情況和我之間唯一的區別是,我想的條件是,如果有空間的字符串匹配一定的字符串。

這裏是我的代碼:

#include <iostream> 
#include <string> 
int main() 
{ 
    using namespace std; 
    string input1; 
    cout << "Welcome to AgentOS V230.20043." << endl; 
    cout << "To log in, please type \"log in\"" << endl; 
    cin >> input1; 
    if (input1 == "log in") 
    { 
     cout << "Please enter your Agent ID." << endl; 
    } 
    return 0; 
} 

出於某種原因,if語句不撿的字符串。但是,如果條件是:

if (input1 == "login" 

它的工作原理。我無法找到一種方式來使用一個字符串與一個條件的空間。我想知道if語句是否可以,但是cin刪除了這個空格。

謝謝!

+0

的可能重複(http://stackoverflow.com/questions/5838711/c-cin-input-with-spaces ) – rbaleksandar

+0

@jigsaw函數cin.getline(input1,N)不處理類型爲std :: string的對象。您可以將它與字符數組一起使用,但是您將無法使用operator ==比較字符數組和字符串字面值。所以你標記了一個錯誤的答案。 –

回答

0

您需要std::getline讀取與空間的整條生產線,當發現一個換行符\nN-1字符將停止。所以,只是做閱讀這樣的:

cin.getline(input1, N); 

哪裏N是字符將讀取的最大數量。

2

您應該使用標準功能std::getline而不是operator >>

例如

if (std::getline(std::cin, input1) && input1 == "log in") 
{ 
    std::cout << "Please enter your Agent ID." << std::endl; 
} 
1

cin >>忽略空白,使用函數getline:[?C++ CIN用空格輸入]

getline(cin, input1);