好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
使用字符串分隔符(标准C ++)解析(拆分)C++中的字符串 关闭 返回上一级  

使用字符串分隔符(标准C ++)解析(拆分)C++中的字符串
+ 查看更多

发布日期:2018-02-26 14:07
分类:CPlusPlus
浏览次数:133
我使用以下语法解析C ++中的字符串:
string parsed,input="text to be parsed";
stringstream input_stringstream(input);

if(getline(input_stringstream,parsed,' '))
{
     // do some processing.
}
使用单个字符分隔符解析是对的。 但如果我想使用字符串作为分隔符。
例如:我想要拆分
scott>=tiger
用> =作为分隔符,这样我就可以得到scott和tiger。

回答

你可以使用std :: string :: find()函数来查找字符串分隔符的位置,然后使用std :: string :: substr()得到一个标记。
例如:
std::string s = "scott>=tiger";
std::string delimiter = ">=";
std::string token = s.substr(0, s.find(delimiter)); // token is "scott" 
find(const string&str,size_t pos = 0)函数返回字符串中第一次出现str的位置,如果找不到字符串,则返回npos。
substr(size_t pos = 0,size_t n = npos)函数返回对象的子字符串,从位置pos开始,长度为npos。
如果你有多个分隔符,在得到一个标记后,您可以删除它(包括分隔符)以继续后续获取(如果要保留原始字符串,只需使用s = s.substr(pos + delimiter.length());):
s.erase(0, s.find(delimiter) + delimiter.length());
这样你可以很容易地循环得到每个标记。
完整的示例
std::string s = "scott>=tiger>=mushroom";
std::string delimiter = ">=";

size_t pos = 0;
std::string token;
while ((pos = s.find(delimiter)) != std::string::npos) {
    token = s.substr(0, pos);
    std::cout << token << std::endl;
    s.erase(0, pos + delimiter.length());
}
std::cout << s << std::endl;
输出:
scott
tiger
mushroom
上一篇如何使用C++把部分字符串替换为其他字符串?
c++排序和索引的记录下一篇
下一篇c++排序和索引的记录

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号