c++ - 来自 std::vector 的路径字符串
问题描述
我有一个 char 向量,看起来像
C:/Users/person/Desktop/Albedo.pngC:/Users/person/Desktop/Metallic.pngC:/Users/person/Desktop/Noice.pngC:/Users/person/Desktop/AO.png
如何将向量拆分为单独的路径?也就是说,我想拥有
std::string path1; // = C:/Users/person/Desktop/Albedo.png;
std::string path2; // = C:/Users/person/Desktop/Metallic.png;
std::string path3; // = C:/Users/person/Desktop/Noice.png;
std::string path4; // = C:/Users/person/Desktop/AO.png;
知道我该怎么做吗?提前致谢!
解决方案
例如,如果向量中的每条路径都具有扩展名,那么一种简单的方法.png
可以如下面的方式所示,如下面的演示程序所示。
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstring>
int main()
{
const char *s ="C:/Users/person/Desktop/Albedo.png"
"C:/Users/person/Desktop/Metallic.png"
"C:/Users/person/Desktop/Noice.png"
"C:/Users/person/Desktop/AO.png";
std::vector<char> v( s, s + std::strlen( s ) );
std::vector<std::string> paths;
const char *ext = ".png";
size_t n = std::strlen( ext );
for ( auto first = std::begin( v ), last = std::end( v ), it = first;
( it = std::search( first, last, ext, ext + n ) ) != last;
first = it
)
{
std::advance( it, n );
paths.push_back( { first, it } );
}
for ( const auto &path : paths )
{
std::cout << path << '\n';
}
return 0;
}
程序输出为
C:/Users/person/Desktop/Albedo.png
C:/Users/person/Desktop/Metallic.png
C:/Users/person/Desktop/Noice.png
C:/Users/person/Desktop/AO.png
推荐阅读
- android - 使用 Android Firebase 一次加载多个 SingleValueEvent
- python - Groupby 和 agg 与 diff 一起使用时产生 NaN
- html - DataTables - 如何获取html表中列的百分比
- html - 子下拉菜单上的 CSS 继承
- javascript - 为什么我的 for 循环多次生成每个响应?
- mysql - mysql varchar 字段未正确导入
- python - 在给定数字列表的情况下获取计算 X 的所有组合
- python - 无法以字符串形式返回 ModelForm ChoiceField - 无法分配“'5'”:“Reclamacoes.uf”必须是“Estados”实例
- c# - C# 模型绑定复杂属性
- haxe - HAXE 的注册键问题