C++ std::vector中的路径字符串`

C++ std::vector中的路径字符串`,c++,algorithm,iterator,stdvector,stdstring,C++,Algorithm,Iterator,Stdvector,Stdstring,我有一个char向量,看起来像 C:/Users/person/Desktop/Albedo.pngC:/Users/person/Desktop/Metallic.pngC:/Users/person/Desktop/Noice.pngC:/Users/person/Desktop/AO.png 如何将向量拆分为各个路径? 就是,我想, std::字符串路径1;//=C:/Users/person/Desktop/Albedo.png; std::字符串路径2;//=C:/Users/per

我有一个char向量,看起来像

C:/Users/person/Desktop/Albedo.pngC:/Users/person/Desktop/Metallic.pngC:/Users/person/Desktop/Noice.pngC:/Users/person/Desktop/AO.png
如何将向量拆分为各个路径? 就是,我想,

std::字符串路径1;//=C:/Users/person/Desktop/Albedo.png;
std::字符串路径2;//=C:/Users/person/Desktop/Metallic.png;
std::字符串路径3;//=C:/Users/person/Desktop/Noice.png;
std::字符串路径4;//=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;
}

不清楚你想做什么。使用winapi的
splitpath
和/或
std::getline
。std::getline会有帮助吗?我不这么认为。我将看看Winapi的
拆分路径
,谢谢!您还可以检查
。除非有固定数量的“单独路径”,否则请提取
std::vector
,而不是不同的变量。无论如何,每个字符串的开头都由一个三元组表示,该三元组由一个字母(驱动器)组成,后面是一个
:'
,然后是一个
“/”
。了解如何在向量中循环搜索该三元组,并将两个三元组之间的字符提取为字符串。此外,某些系统(如windows)也使用
'\'
(必须以
字符或字符串文字分隔)作为路径分隔符。不,我不打算写代码-你需要努力解决你的问题-我没有看到完整的字符串-我在打电话。请不要理会我的评论。很好,非常感谢!工作起来很有魅力!你知道有什么方法使这个扩展独立吗?我正在考虑使用
C://
进行拆分,但这样会使其依赖于平台:(@FahimFuad)我还没有想到这一点。但是你可以用新的要求提出新的问题。
C:/Users/person/Desktop/Albedo.png
C:/Users/person/Desktop/Metallic.png
C:/Users/person/Desktop/Noice.png
C:/Users/person/Desktop/AO.png