C++中istringstream配合getline()的使用

C++中可以使用istringstream与getline()对字符串进行分割,具体方法如下。

目录

        1.istringstream

        2.getline()

        3.实现字符串分割


1.istringstream

        isstringstream是一个类,它由istream类派生而来,包含在头文件中,用于执行C++风格字符串流的输入操作。在头文件中还包括另外两个类:

  • ostringstream,用于执行C++风格的字符串流的输出操作
  • stringstream可以同时进行输入和输出操作

 2.getline()

  getline()的用法有很多种,此处用于字符串分割参考的用法是:

istream& getline (istream&  is, string& str, char delim);

 其中is可以是一个istringstream的对象

str用于用来存储输入流中的流信息

delim为截断字符,默认情况下位'\n'

getline()还有一些其他用法,可参考C++中getline()的用法


3.实现字符串分割
#include 
#include 
#include 
using namespace std;

int main() {

    istringstream iss("192.168.0.1");

    vector res;

    string seg;

    while (getline(iss, seg, '.')) {
        res.push_back(seg);
    }

    for (int i = 0; i < res.size(); i++) {
        cout << res[i] << endl;
    }

    return 0;
}

运行结果:

C++中istringstream配合getline()的使用_第1张图片

还可以把字符串分割封装成一个函数:

vector split(string& s,char c) {
    istringstream iss(s);
    string seg;
    vector res;
    while (getline(iss, seg, c)) {
        res.push_back(seg);
    }
    return res;
}

        该函数包含两个参数,其中s表示待分割的字符串,c表示分割字符,将分割好的字符串用vector存好,最后一起返回即可。这样就可以更方便地对不同的字符串进行不同的分割。


参考文章:C++中istringstream、ostringstream、stringstream详细介绍和使用_c++ istringstream-CSDN博客

【C++】使用istringstream根据分隔符分割字符串 - Flix - 博客园

C++中getline()的用法-CSDN博客

你可能感兴趣的:(c++,开发语言)