首页 >后端开发 >C++ >如何有效地解析 C 中的字符串标记?

如何有效地解析 C 中的字符串标记?

Barbara Streisand
Barbara Streisand原创
2024-11-14 11:28:021055浏览

How Can I Efficiently Parse String Tokens in C  ?

在 C 中高效解析字符串标记

为了有效地将字符串拆分为由特定分隔符分隔的标记,C 提供了强大的机制。例如,如果您的字符串由分号 (;) 分隔的单词组成,您可以采用以下策略:

使用 std::getline()

std ::getline() 函数提供了一种简单而通用的方法。它可以处理任何类型的分隔符,使其适用于提取行和标记。下面是一个示例:

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

using namespace std;

int main() {
    vector<string> strings;
    istringstream f("denmark;sweden;india;us");
    string s;    
    while (getline(f, s, ';')) {
        cout << s << endl;
        strings.push_back(s);
    }
}

此代码初始化一个字符串和一个向量。然后,它使用 getline() 迭代该字符串,并在每个分号处将其分割。每个标记都会被打印并添加到向量中。

自定义分割函数

或者,您可以创建一个自定义函数来处理标记化:

#include <string>
#include <vector>

using namespace std;

vector<string> split(const string& str, char delimiter) {
    vector<string> tokens;
    string token;
    istringstream iss(str);
    while (getline(iss, token, delimiter)) {
        tokens.push_back(token);
    }
    return tokens;
}

该函数接受一个字符串和一个分隔符作为输入,并返回一个标记向量。它的操作与 getline() 类似,但提供了使用任何分隔符的灵活性。

其他注意事项

使用字符串时,遵守安全准则至关重要。 C 风格的字符串函数和 Boost 等开源库可能会产生安全隐患。因此,建议依赖标准 C 函数,如 std::getline() 或实现自定义拆分逻辑。

以上是如何有效地解析 C 中的字符串标记?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn