21xrx.com
2024-11-10 00:49:09 Sunday
登录
文章检索 我的文章 写文章
C++ 字符串切分技巧
2023-07-11 10:12:02 深夜i     --     --
C++ 字符串 切分技巧

在C++程序开发中,我们经常需要对字符串进行处理,其中最常见的一个问题就是如何对字符串进行切分。在字符串切分这个问题中,我们需要将一个字符串按照特定的规则进行分割,然后将分割得到的子字符串存储下来以便后续的处理。接下来,本文将介绍C++中常用的字符串切分技巧。

1. 使用空格作为分隔符

在C++中,我们可以使用空格作为分隔符,将字符串切分成一个个单词。具体的实现方法如下:


#include <iostream>

#include <vector>

#include <string>

#include <sstream>

using namespace std;

vector<string> split(const string& str, char delimiter = ' ')

{

  vector<string> tokens;

  stringstream ss(str);

  string token;

  while (getline(ss, token, delimiter)) {

    tokens.push_back(token);

  }

  return tokens;

}

int main()

{

  string str = "Hello world! Welcome to C++ programming.";

  vector<string> words = split(str);

  for (const auto& word : words)

    cout << word << endl;

  

  return 0;

}

2. 使用特定的字符作为分隔符

除了使用空格作为分隔符,我们还可以使用其他的特定字符作为分隔符。比如,如果我们想将一个以逗号为分割符的字符串切分成多个子串,可以按照如下的方式进行实现:


#include <iostream>

#include <vector>

#include <string>

#include <sstream>

using namespace std;

vector<string> split(const string& str, char delimiter)

{

  vector<string> tokens;

  stringstream ss(str);

  string token;

  while (getline(ss, token, delimiter)) {

    tokens.push_back(token);

  }

  return tokens;

}

int main()

{

  string str = "apple,banana,orange,grape";

  char delimiter = ',';

  vector<string> fruits = split(str, delimiter);

  for (const auto& fruit : fruits)

    cout << fruit << endl;

  

  return 0;

}

3. 使用正则表达式作为分隔符

如果想要更加灵活地进行字符串切分,可以使用正则表达式作为分隔符。下面是一个使用正则表达式进行字符串切分的例子:


#include <iostream>

#include <vector>

#include <string>

#include <regex>

using namespace std;

vector<string> split(const string& str, const string& pattern)

{

  regex re(pattern);

  vector<string> tokens(sregex_token_iterator(str.begin(), str.end(), re, -1), sregex_token_iterator());

  return tokens;

}

int main()

{

  string str = "I have three apples and two bananas.";

  string pattern = "\\s+|\\b";

  vector<string> words = split(str, pattern);

  for (const auto& word : words)

    cout << word << endl;

  

  return 0;

}

在上述代码中,我们使用正则表达式将字符串按照空格或单词的边界进行切分。

综上所述,C++中有多种实现字符串切分的方法,我们可以根据具体需要选择不同的方法。在实际开发中,如果需要对字符串进行复杂的处理,建议使用正则表达式,否则可以考虑使用简单的分隔符来进行字符串切分。

  
  
下一篇: 常见问题?

评论区

{{item['qq_nickname']}}
()
回复
回复