2014-10-10 119 views
0

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

比方说,我有这样的字符串:

a gold coin 

如何我可以分割文章在这种情况下是一个到一个单独的字符串,然后让所有的其他数据内容成不同的字符串,在这种情况下是金币

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

编辑 我不是试图从空间令牌拆分字符串我从字符串分割的特殊字词在条件提取代词项目名称和代名词字符串。

+0

你会总是有一个简单的[文章] [名词]布局,还是你需要解析复杂的句子? – 2014-10-10 01:31:35

+1

我很想写一个答案,但我更新了我的系统,它把所有东西都写完了。看看std :: string :: substr()。你可以检查mystring.substr(0,3)==“an”|| mystring.substr(0,2)==“a”。如果你匹配,第二种情况下mystring.substr(3)第一种情况下的mystring.substr(4)应该给你剩下的字符串。 – 2014-10-10 01:31:47

+0

http://www.cplusplus.com/reference/string/string/substr/ – 2014-10-10 01:32:48

回答

1

您可以使用

.replace

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

the reference

+3

我假设OP想要两个结果字符串。 – 2014-10-10 01:31:04

1

我的做法是:

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

这是可能避免的maybe_article分配,但如果你限制自己的标准库,这是最明显的方式,并且很容易修改,以支持计数到位的文章。

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