C++分割字符串? [复制]

Posted

技术标签:

【中文标题】C++分割字符串? [复制]【英文标题】:C++ splitting string? [duplicate] 【发布时间】:2014-10-10 01:22:06 【问题描述】:

我一直在处理 C++ 字符串,目前我想知道如何拆分字符串的文章和剩下的数据。

假设我有这个字符串:

a gold coin

如何将 article(在这种情况下为 a)拆分为单独的字符串,然后获取所有其他数据内容到一个不同的字符串中,在这种情况下是 gold coin?

请注意,文章有时可能是,有时没有文章。

编辑 我不是要从空格标记中拆分字符串,而是要从字符串中拆分特殊单词,以提取代词文章名称和代词字符串。

【问题讨论】:

你会一直有一个简单的[article] [nouns]布局还是需要解析复杂的句子 我很想写一个答案,但我更新了我的系统,它让一切变得糟糕。查看 std::string::substr()。您可以检查 mystring.substr( 0, 3 ) == "an " || mystring.substr( 0, 2 ) == "a"。如果你匹配任何一个,mystring.substr(4) 在第一种情况下 mystring.substr(3) 在第二种情况下应该给你字符串的其余部分。 cplusplus.com/reference/string/string/substr 链接的问题介绍了如何使用substrreplace 等来拆分字符串的策略。 谢谢@kiss-o-matic,这正是我必须做的! 【参考方案1】:

你可以使用

.replace

str.replace(str.begin()+1,str.end()1,1,''); 

the reference

【讨论】:

我假设 OP 想要两个结果字符串。【参考方案2】:

我的做法是:

    找到第一个单词的结尾:std::string maybe_article = input.substr(0, input.find_first_of(" \t")); 检查是否为文章:if (maybe_article == "a" or maybe_article == "the" or maybe_article == "the") 如果是,则取子字符串。 return input.substring(input.substr(input.find_first_not_of(" \t", maybe_article.size()))); 否则,只返回原始字符串。 return input;

可以避免分配maybe_article,但如果您将自己限制在标准库中,这是最明显的方式,并且很容易修改以支持计数来代替文章。

我个人放弃了 std::string 并写了自己的。

【讨论】:

以上是关于C++分割字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C++如何将一个字符数组分割成几个数组?

用特殊字符“|”分割字符串[复制]

C++使用stringstream分割字符串

C++中String类的字符串分割实现

C++实现按指定子串分割母串(split)函数 按空格分割string字符串

C++中的分割函数