vector<string> &CStringUtil::Split(vector<string> &veStr, const string &strSource, const string &strSeparator){ unsigned long nBegin = 0, nPos = 0; string strSubStr; while((nPos = strSource.find(strSeparator, nBegin)) != string::npos){ strSubStr = strSource.substr(nBegin, nPos-nBegin); veStr.push_back(strSubStr); nBegin = nPos + strSeparator.size(); if (nBegin > strSource.size()) break; } if (nBegin <= strSource.size()){ strSubStr = strSource.substr(nBegin); veStr.push_back(strSubStr); } return veStr; }什么作用
时间: 2024-04-28 13:26:55 浏览: 135
这段代码实现了一个字符串分割的函数,可以将一个字符串按照指定的分隔符进行分割,将分割后的子串存入一个 vector<string> 中,并返回该 vector<string>。具体实现过程如下:
1. 初始化变量 nBegin 和 nPos 为 0,用于记录分割子串的起始位置和结束位置。
2. 在 while 循环中,通过调用字符串的 find() 函数来查找分隔符,如果找到分隔符,则计算出分割子串的长度,并使用 substr() 函数将分割子串存入 vector<string> 中。
3. 更新变量 nBegin 的值,使其指向下一个分割子串的起始位置。
4. 如果 nBegin 的值超过了字符串的长度,则跳出循环。
5. 如果 nBegin 的值小于等于字符串的长度,则说明还存在分割子串,此时使用 substr() 函数将最后一个分割子串存入 vector<string> 中。
6. 返回存储了分割子串的 vector<string>。
相关问题
QVector<QString> 和std::vector<string>之间的转换的代码示例
以下是从QVector<QString>转换到std::vector<string>的代码示例:QVector<QString> qvector;
std::vector<string> svector;// 将QVector元素转换为std::string
for (const auto &qstr : qvector) {
svector.push_back(qstr.toStdString());
}
现在有一类型:std::vector<std::pair<std::string, std::vector<string>>>,请问如何分别取到std::pair中的std::string和std::vector<string>呢
要分别取到`std::pair`中的`std::string`和`std::vector<string>`,可以使用`std::get`函数。示例代码如下:
```cpp
#include <iostream>
#include <vector>
#include <string>
int main() {
std::vector<std::pair<std::string, std::vector<std::string>>> vec;
// 添加一些数据到vec中
vec.push_back(std::make_pair("pair1", std::vector<std::string>{"string1", "string2", "string3"}));
vec.push_back(std::make_pair("pair2", std::vector<std::string>{"string4", "string5"}));
vec.push_back(std::make_pair("pair3", std::vector<std::string>{"string6"}));
// 遍历vec,取出每个pair中的string和vector<string>
for (const auto& pair : vec) {
std::cout << "First string: " << std::get<0>(pair) << std::endl;
std::cout << "Second vector of string: ";
const auto& vectorOfString = std::get<1>(pair);
for (const auto& str : vectorOfString) {
std::cout << str << " ";
}
std::cout << std::endl;
}
return 0;
}
```
输出结果:
```
First string: pair1
Second vector of string: string1 string2 string3
First string: pair2
Second vector of string: string4 string5
First string: pair3
Second vector of string: string6
```
阅读全文