2013-02-14 39 views
0

我想下面的C代码转换为C++利用istringstream困惑:sscanf会istringstream C++

void test(char *s) { 
    int i; 
    sscanf(s, "%*s%d", &i); 
} 

我至今是:

void test(char *s) { 
    int i; 
    istringstream iss(s); 
    iss >> s >> i; 
} 

它有错误出现。我对istringstream太陌生了,无法弄清楚如何解决它。我希望对我的错误有所了解。 s应该是一个没有空格的字符串和整数(例如Good123),我想删除整数并将其放入i中。

回答

0

对于初学者,您应该使用其他变量来存储结果分析字符串。

void test(char *s) { 
    int i; 
    string s1; 
    istringstream iss(s); 
    iss >> s1 >> i; 
} 
+0

尝试过,但它然后它将s的内容存储到s1,但没有int被存储在我。 – user1820560 2013-02-14 05:15:47

+1

问题是,与sscanf相反,istringstream期望有一个空白分隔符。它只适用于非常简单的解析(甚至比sscanf提供的更简单)。我会用正则表达式。 – fons 2013-02-14 05:18:19