2014-11-16 47 views
0

我想寫一個函數,檢查一個字符串是否包含一個數字,正數或負數。檢查字符串的數字

getline(cin,line); 

    istringstream sin(line); 

    while (sin >> ws >> in){ 

     if(all_of(in.begin(), in.end(), ::isdigit){ 
     //do something with number 
     } 

問題是,isdigit()會將所有負數設置爲非數字。 還有什麼其他方法來檢查一個字符串是否包含數字?

樣品輸入:1個2 -2 ASDF 4

+0

爲什麼不直接在'line'上工作,而不是將一個字符串流包裝在它的周圍呢? –

+0

你有沒有聽說過'std :: stoi'? – Rook

回答

0

檢查的主角是-(或+,或任何其他你會接受),如果是這樣,刪除它,然後用你的當前測試剩下的。

更完整的解決方案是使用正則表達式。