C++ filesystem如何进行字符串切割
时间: 2024-03-16 18:45:26 浏览: 48
毕业设计项目:基于最小错误率和Fisher线性分类器的QT&C++实现手写字符识别系统.zip
5星 · 资源好评率100%
在C++标准库中,可以使用`std::string`的`find`、`substr`和`npos`等函数来进行字符串切割。具体来说,你可以使用`find`函数查找字符串中的分隔符位置,并使用`substr`函数截取子字符串。以下是示例代码:
```c++
#include <iostream>
#include <string>
int main() {
std::string s = "hello,world,how,are,you";
std::string delimiter = ","; // 分隔符
size_t pos = 0; // 查找位置
while ((pos = s.find(delimiter)) != std::string::npos) {
std::string token = s.substr(0, pos); // 截取子字符串
std::cout << token << std::endl; // 输出子字符串
s.erase(0, pos + delimiter.length()); // 删除已经处理的部分
}
std::cout << s << std::endl; // 输出最后一个子字符串
return 0;
}
```
在上面的代码中,首先定义了一个字符串`s`和一个分隔符`delimiter`。然后,使用`find`函数查找分隔符的位置,并使用`substr`函数截取子字符串。最后,使用`erase`函数删除已经处理的部分,并重复执行上述步骤,直到字符串中不再有分隔符。需要注意的是,在输出最后一个子字符串时,不要忘记输出`s`中剩余的部分。
如果你想要将切割后的子字符串存储到一个容器中,可以使用`std::vector`或`std::array`等标准库容器来存储。以下是使用`std::vector`存储子字符串的示例代码:
```c++
#include <iostream>
#include <string>
#include <vector>
int main() {
std::string s = "hello,world,how,are,you";
std::string delimiter = ","; // 分隔符
size_t pos = 0; // 查找位置
std::vector<std::string> tokens; // 容器
while ((pos = s.find(delimiter)) != std::string::npos) {
std::string token = s.substr(0, pos); // 截取子字符串
tokens.push_back(token); // 存储子字符串
s.erase(0, pos + delimiter.length()); // 删除已经处理的部分
}
tokens.push_back(s); // 存储最后一个子字符串
// 输出容器中的元素
for (const auto& token : tokens) {
std::cout << token << std::endl;
}
return 0;
}
```
在上面的代码中,首先定义了一个字符串`s`、一个分隔符`delimiter`和一个容器`tokens`。然后,使用`find`函数查找分隔符的位置,并使用`substr`函数截取子字符串,并将子字符串存储到容器中。最后,重复执行上述步骤,直到字符串中不再有分隔符。需要注意的是,在存储最后一个子字符串时,需要使用`push_back`函数将其存储到容器中。
阅读全文