zoukankan      html  css  js  c++  java
  • 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的话,直接一个字符一个字符地遍历、到逗号处断开也可以,这里只是方法之一。

  • 相关阅读:
    适度平衡树
    适度平衡树
    卡特兰(Catalan)数列
    卡特兰(Catalan)数列
    从二叉搜索树到平衡二叉搜索树
    java开发环境配置(windows下JDK7+tomcat7)
    Spring整合Hibernate的步骤
    C++重载加号运算符实现两个结构体的相加
    AABB包围盒、OBB包围盒、包围球的比較
    Html的空格显示
  • 原文地址:https://www.cnblogs.com/jiading/p/11587992.html
Copyright © 2011-2022 走看看