用多个enddelimiter剪切字符串

时间:2017-09-11 11:40:52

标签: c++ string split substring standard-library

我想弄清楚两个不同角色之间的子串。字符串看起来像:

channelBlock_0\d_off_mux=8, 8, 8, 8, 8, 8, 8, 8
channelBlock_0\d_selvth=true, true, true, true, true, true, true, true

我想在'='之后和第一个','之前分开

'='已经为我工作后切割......这就是我得到的:

std::string line;             //contains the string from above
std::string startDel = "=";
std::string endDel   = ",";

cout << line.substr(line.find(startDel)+1,line.find(endDel));

我的输出如下:

8, 8, 8, 8, 8, 8, 8, 8
true, true, true, true, true

我怎样才能在第一个'之后剪切','所以我的输出只是

8
true

2 个答案:

答案 0 :(得分:2)

检查substring()后,您可以看到您需要的是:

line.substr(line.find(startDel) + 1, line.find(endDel) - (line.find(startDel) + 1));

因为该方法的第二个参数声明:

  

len

     

要包含在子字符串中的字符数(如果字符串是   更短,使用尽可能多的字符。)

答案 1 :(得分:0)

#include <iostream>
#include <string>
using namespace std;

 string str = "channelBlock_0\d_off_mux=8, 8, 8, 8, 8, 8, 8, 8";
 string ans;

int main()
{
    int index = str.find_first_of("=");
    index++;
    while (str[index] != ',')
         ans += str[index];

    cout << ans;

    return 0;
}