3

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

本例中的地址是I0043

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

有没有可能告诉例如 getline 在各种标志处结束?像:getline(tmp_stringstream,tmp_string, 'C' || 'P');

谢谢

帕特里克

4

3 回答 3

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(",.-/ ") );
于 2013-03-06T07:29:59.587 回答
0

在 C 运行时库中有一个字符串标记器函数strtok (include <string.h>)

在 C++ 运行时有一个等效的std::strtok (include < cstring>)

于 2013-03-06T07:39:30.700 回答
0

您可以使用std::string::find_first_of, 和std::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
于 2013-03-06T09:49:04.457 回答