sscanf可能的空缺补偿

时间:2014-01-29 06:53:30

标签: c++ scanf

我有一个字符串,其编写如下:

^SYSINFO:2,3,0,3,1,,3

您会注意到该行中缺少一个数字,但情况可能并非总是如此。我使用sscanf扫描线并提取最后一个整数。

sscanf(response_c, "^SYSINFO:%*d,%*d,%*d,%*d,%*d,,%d", &networkattach_i);

如何补偿当前丢失的数字,但也可以写入?

以下不起作用:

sscanf(response_c, "^SYSINFO:%*d,%*d,%*d,%*d,%*d,%*d,%d", &networkattach_i);

1 个答案:

答案 0 :(得分:2)

您可以尝试使用 getline 来解析字符串。一个例子是,

using namespace std;  
string input = "^SYSINFO:2,3,0,3,1,,3";
istringstream ss(input);
string token;

getline(ss, token, ':'); //reads till SYSINFO  
while(getline(ss, token, ',')) {
    cout << token << '\n';
}