0

a-zC++ を使用して、ファイルがあり、キーワードを探しているとしますが、隣接する文字をまたはにしたくないとします0-9

U次のようなファイルでキーワードを検索したいとします。

U 1.2;
Under 2.3;
abcdUefg;

2 行目や 3 行目ではなく、1 行目が表示されることを願っています。ただし、以下も問題ないことに注意してください。

"(U|B|tau)"

ここUは一言だから。

ポイントは、探しているキーワードが、単語の一部ではなく、独立した単語であることです。それを行う最良の方法は何ですか?

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    string line;
    vector<string> lines;
    ifstream myfile ("FILE");
    if (myfile.is_open())
    {
        while (myfile.good())
        {
            getline(myfile,line);
            lines.push_back(line);
        }
        myfile.close();
    }
    else
    {
        cout << "Unable to open file";
    }

    for (unsigned i = 0; i < lines.size(); ++i)
    {
        if (lines[i].find("keyName") != string::npos)
        {
            printf("Key found!\n");
        }
    }

    myfile.close();
    return 0;
}
4

2 に答える 2

1

各行から各単語を読み取り、キーと比較する必要があります。

string word;
for (unsigned i = 0; i < lines.size(); ++i)
{
    // Read words from the line one by one. They should be space separated.
    istringstream iss(lines[i]);
    while(iss >> word) {
       size_t key_loc = word.find("U");

       if(key_loc == word.size()) {
           // Found "U" followed by space
       }
       // If not the last one in the word. Check what is next to it.
       if(key_loc < word.size() && !std::isalnum(word.at(key_loc+1)) ) {
            // Found it not followed by alphanumeric.
       }
    }
}
于 2013-04-07T21:46:52.540 に答える