从多行代码中获取单词C++

getting a word from multiple lines of code C++

本文关键字:获取 单词 C++ 代码      更新时间:2023-10-16

我有一个文本文件,其中包含不同数量的单词/行。一个例子是:

Hi
My name is Joe
How are you doing?

我想抓住用户输入的任何内容。所以如果我搜索乔,它会得到它。不幸的是,我只能输出每一行而不是单词。我有一个向量,可以逐行保存这些中的每一个

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.

怎样才能得到我能得到实际单词的地方?

operator>>使用空格作为分隔符,因此它已经逐字读取输入:

#include <iostream>
#include <sstream>
#include <vector>
int main() {
    std::istringstream in("HinnMy name is JoennHow 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
}