-1

さまざまな数の単語/行を含むテキスト ファイルがあります。例は次のとおりです。

Hi

My name is Joe

How are you doing?

ユーザーが入力したものは何でも取得したいです。Joe を検索すると、それが表示されます。残念ながら、単語ではなく各行しか出力できません。これらのそれぞれを行ごとに保持しているベクトルがあります

vector<string> line;
string search_word;
int linenumber=1;
    while (cin >> search_word)
    {
        for (int x=0; x < line.size(); x++)
        {
            if (line[x] == "\n")
                linenumber++;
            for (int s=0; s < line[x].size(); s++)
            {
                cout << line[x]; //This is outputting the letter instead of what I want which is the word. Once I have that I can do a comparison operator between search_word and this
            }

        }

だから今line[1] = Hiline[2] = My name is Joe

実際の単語を取得できる場所にどのように取得しますか?

4

1 に答える 1

1

operator>>区切り文字として空白を使用するため、すでに入力を単語ごとに読み取っています。

#include <iostream>
#include <sstream>
#include <vector>

int main() {
    std::istringstream in("Hi\n\nMy name is Joe\n\nHow are you doing?");

    std::string word;
    std::vector<std::string> words;
    while (in >> word) {
        words.push_back(word);
    }

    for (size_t i = 0; i < words.size(); ++i)
        std::cout << words[i] << ", ";
}

出力:Hi, My, name, is, Joe, How, are, you, doing?,

このベクトル内で特定のキーワードを検索する場合は、このキーワードをstd::stringオブジェクトの形式で準備するだけで、次のようにすることができます。

std::string keyword;
...
std::vector<std::string>::iterator i;
i = std::find(words.begin(), words.end(), keyword);
if (i != words.end()) {
    // TODO: keyword found
}
else {
    // TODO: keyword not found
}
于 2013-10-13T21:48:04.450 に答える