c++ - 在 C++ String 中寻找一种好方法来查找关键字,而相邻字符不是 a-z

标签 c++ string

使用 C++,假设我有一个文件,我正在寻找一个关键字,但我不希望它的相邻字符是 a-z0-9.

假设我想在这样的文件中查找关键字 U:

U 1.2;
Under 2.3;
abcdUefg;

我希望出现第一行,而不是第二行或第三行。但请注意以下内容也可以。

"(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;
}

最佳答案

假设字符串是 ASCII a-z 和 0-9 你可以这样做..

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

其中isalnum如果它是 0-9 或 a-z 并且位于 <cctype> 中,则返回真

关于c++ - 在 C++ String 中寻找一种好方法来查找关键字,而相邻字符不是 a-z,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15868173/

相关文章:

c# - 如何将字符串从 C# 传递给 delphi dll 函数?

java - Java 字符串实习的替代方案

c++ - 在 C++ 中定义类枚举值的 std::vector 的缩写语法

c# - 使用 DLL 将 C# StringBuilder/string 传递给 C++ char*

c++和lua-如何开始?

java - 在 Java 中使用带有字符串和整数的 HashMap 时遇到问题

c - 为什么释放动态分配的内存会在这里产生问题?

c++ - 在 C++ 中是否可以有可变数量的字符串数组?

c++ - OpenGL -- 如何在 OpenGL 4.5 中处理多个 image1D

string - 在 Grails 中连接多个字符串