21xrx.com
2025-04-01 01:36:05 Tuesday
文章检索 我的文章 写文章
C++字符串分割方法
2023-07-03 18:21:03 深夜i     21     0
C++ 字符串 分割 方法

C++是一种高效的编程语言,它可以轻松地对字符串进行处理。在实际应用中,字符串常常需要被分割为多个部分进行处理。本文将介绍C++中常用的字符串分割方法。

1. istringstream

istringstream是C++标准库中的一个字符串流类,可以将一个字符串当作输入流进行读写操作。使用该类可以很方便地把字符串分割成多个部分。

比如,我们要将字符串str按照空格分割成多个部分,可以先定义一个istringstream对象,然后通过读取每个部分并存储到一个字符串变量中的方式来实现分割:

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main() {
  string str = "This is a string";
  istringstream ss(str);
  vector<string> tokens;
  string token;
  while (getline(ss, token, ' ')) {
    tokens.push_back(token);
  }
  for (const auto& t : tokens)
    cout << t << endl;
  
  return 0;
}

该程序的输出结果如下:

This
is
a
string

在上述程序中,我们定义了一个istringstream对象ss,将需要分割的字符串传递给该对象。然后在while循环中,用getline函数逐行读取每个空格分隔的字符串,并将其存储到一个vector容器中。最后通过遍历该容器可以将所有的分割字符串输出。

2. strtok

strtok是C标准库中的一个字符串分割函数,可以根据指定的字符将字符串分割成多个子串。在C++中,可以通过调用该函数实现字符串分割。

使用该函数的示例如下:

#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int main() {
  char str[] = "This is a string";
  char* token = strtok(str, " ");
  vector<string> tokens;
  while (token != NULL) {
    tokens.push_back(string(token));
    token = strtok(NULL, " ");
  }
  for (const auto& t : tokens)
    cout << t << endl;
  
  return 0;
}

该程序的输出结果如下:

This
is
a
string

在上述程序中,我们用strtok函数将需要分割的字符串传递给该函数,并指定分隔符为空格。在while循环中,使用strtok函数遍历分割成的每个子串,并将其存储到一个vector容器中。最后通过遍历该容器可以将所有的分割字符串输出。

总结

以上介绍了C++中常用的两种字符串分割方法,分别是istringstream和strtok函数。在实际应用中可以根据具体需要选择不同的方法进行字符串分割。

  
  

评论区

请求出错了