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
链接的问题介绍了如何使用substr
、replace
等来拆分字符串的策略。
谢谢@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++分割字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章