2017-03-22 8 views
1

私が書いているプログラムの場合文字列配列内の特定の単語の場所を見つける必要がありますが、どうすればよいか分かりません。これは私が作ったコードですが、うまくいきません:C++の文字列配列上の単語の位置を見つける方法は?

int location; 
string input; 

cout << "Type your name" << endl; 
cin >> input; 

    for (int i = 0; i <= count; i++) 
    { 
     call_DB[i].name; 

    if (call_DB[i].name == input) 
     { 
      location = i; 
     } 
    } 

私はそれを修正するために何ができますか?ありがとうございました。

+1

std :: string :: find? – Steephen

+0

[文字列から部分文字列を見つける方法]の複製がありますか?(http://stackoverflow.com/questions/13195353/how-to-find-substring-from-string) – CaptainTrunky

+0

私は十分な情報があるとは思いませんこの質問。あなたのデバッガでcall_DB [...]の内容を調べ、空白を見てみましょう。 std :: set、std :: unordered_set、std :: mapのようなSTLコンテナに、(O)log(N)または(O) N)ルックアップ時間。 – JeremiahB

答えて

1

Try std::find_if、提供された予測機能を満たす項目の配列を検索します。

auto it = std::find_if(std::begin(db), std::end(db), [&name](auto const& x) { 
    return x.name == name; 
}); 

そして、あなたがしたい場合は:あなたはstd::find_ifを使用して配列要素へのイテレータを取得することができますsize_t index = iter - call_DB;

1

そのようなアイテムが見つかった場合、インデックスが配列のベースからの距離がある

auto iter = std::find_if(call_DB, call_DB + count, [&input](const YOUR_CALL_DB_TYPE& item){ return item.name == input; }); 

if(iter == call_DB + count) 
    printf("Not found\n"); 
else 
    printf("Found: %s\n", iter->name.c_str()); 

、配列へのインデックス:

auto index = it - std::begin(db); 
関連する問題