如何在各种标志处切割弦

时间:2013-03-06 07:20:13

标签: c++ string getline

我遇到了以下问题: 我从.csv文件中读取WinCC变量。现在有一个包含ip地址的字符串。它看起来像这样:I0043CTRL/CALH1$ST$Beh$stVal;Len=4;MMSType=133;Flag=RW

此示例中的地址为I0043

现在我想在地址后面剪切字符串,但有更多可能的变量名称,例如I0043PROT/...

有没有可能告诉例如getline以各种迹象结束? 喜欢:getline(tmp_stringstream,tmp_string, 'C' || 'P');

谢谢

帕特里克

3 个答案:

答案 0 :(得分:1)

boost::split可以满足您的需求:http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/usage.html#idp163440592

std::string mystring("asd,ff.erw qewr");
std::vector<std::string> tokens;
boost::split( tokens, mystring, boost::is_any_of(",.-/ ") );

答案 1 :(得分:0)

在C运行时库中有一个字符串标记化函数strtok(包括&lt; string.h&gt;)

在C ++运行时中有一个等价的std::strtok(包括&lt; cstring&gt;)

答案 2 :(得分:0)

您可以使用std::string::find_first_ofstd::string::substr

string line("I0043CTRL/CALH1$ST$Beh$stVal;Len=4;MMSType=133;Flag=RW");

cout << line.substr(0, line.find_first_of("CP"));

输出:

I0043