2011-06-17 10 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

関連する問題