2011-06-17 20 views
0

請參閱下面的代碼片段,特別是第一個'else if'語句。我希望用戶有能力做到這一點:簡單的問題:爲什麼字符串庫函數std :: string :: find總是返回std :: string :: npos?

所以我要檢查「負荷」是字符串中,並試圖打開任何的「負荷」後

負載文件名。然而,string :: npos似乎總是返回(string :: npos只是意味着沒有位置)。

我可能在做一些愚蠢的事 - 這是基本的東西!

void Main::user_choice() { 
    string choice; 
    while(choice != "exit") { 
     cout << "> "; 
     cin >> choice; 
     if(choice == "view") { 
      Main::view_frameworks(); 
     } 
     else if(choice.find("load ") != string::npos) { 

     } 
     else if(choice == "exit") { 
      return; 
     } 
     else { 
      cout << "Invalid command" << endl; 
     } 
    } 
} 

回答

6

cin >> choice在第一個空格之前停止讀取。您需要getline(std::cin, choice)這裏。

+1

另外,請記住'std :: string :: find'區分大小寫,所以如果用戶輸入'Load myfile.txt',那麼它也會被報告爲'std :: string :: npos' 。 – Chad

相關問題