C++中如何實現split的效果?


C++中如何實現split的效果?

和Python等語言不同,C++的string類沒有內置split函數,這對於實際應用中要經常分割字符串的情況非常不方便。有很多種方法來處理,這里講一種比較方(tou)便(lan)的方法——使用字符串流的方式吧:

先上示例代碼,這里是要讀取一個存放在E盤根目錄的一個csv文件(以逗號隔開的文本文件):

#include <iostream>
#include<sstream>
#include <fstream>
#include<vector>
#include<string>
using namespace std;
int main()
{
    ifstream in("E://packageProblem.csv");
    string line;
    while(getline(in,line)){
        cout<<"原始數據為:"<<line<<endl;
        istringstream sin(line);//實例化一個字符串流對象並讀入line字符串,除了這種方式,還可以用sin.str(line)的方式寫入。當然,多次使用同一個流是需要clear的。
        vector<string>fields;//承接分割后的字符串
        string field;
        while(getline(sin,field,',')){//將字符串流sin中的字符讀入到field字符串中,以逗號為分隔符
            fields.push_back(field);
            cout<<field<<endl;
        }
    }
    cout<<endl;
}

文件中原本是:

10,
3,4
4,5
5,6

輸出為:

原始數據為:10,
10
原始數據為:3,4
3
4
原始數據為:4,5
4
5
原始數據為:5,6
5
6

當然這只是一種方法,實際上如果我們使用了vector的話,直接一個字符一個字符地遍歷、到逗號處斷開也可以,這里只是方法之一。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM