使用sstream讀取字符串中的數字(c++)

先介紹以前常用的方法(stoi或atoi)

在以往的c++編程中當我們輸入整行以空格作爲分割的數字時

由於整行讀入的字符串,我們會採用空格切分字符串,在進行處理

stoi需要包含頭文件#include<string>

atoi需要包含頭文件#include<sctdlib>

stoi(string)參數是一string類型,當字符串不合法時,會報錯

atoi(char*)參數是char*類型,即c字符串,當字符串非法時,他會從字符串開始尋找正負號小數點或者數字,遇到非法字符時停下

例如“123HD23330”通過調用atoi返回值爲123,而stoi則會直接報錯

此外還有一函數strtoi(char*)用法與atoi一直,只是stroi可以指定的進制

以上是整數類型的轉換,此外還有stof(),stod(),strtod()等函數可以進行浮點數的轉換


接下來是要介紹的stringstream類,運用此方法不需要講一羣數字組成的串用空格分開

需要#include<sstream>

通過stringstream類對象實現字符串轉

實例如下

#include<sstream>
#include<string>
#include<iostream>
using namespace std;
int main(){
    string line;
    while(getline(cin,line)){
        int x;
        stringstream ss(line);  //建立stringstream對象,初始化流內容爲line所代表的字符串
        while(ss>>x)            //從line中一次讀取數字存入x
        cout<<x<<endl;
    }
    return 0;
}


如果輸爲:"12 23 43 555"

則輸出爲 
12
23
43
555

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章