2013-02-14 85 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