如何将路径拆分为单独的字符串
How to split a path into separate strings?
这是一个免费问题:
如何建立一个完整的路径字符串(安全)从单独的字符串?
那么我的问题是,如何以跨平台的方式将路径分割成单独的字符串。
这个解决方案,使用Boost。Filesystem非常优雅,Boost一定实现了一些splitPath()函数。我找不到。
注意:请记住,我可以自己完成这个任务,但我对封闭框解决方案更感兴趣。
确实有path_iterator
。但是如果你想要优雅:
#include <boost/filesystem.hpp>
int main() {
for(auto& part : boost::filesystem::path("/tmp/foo.txt"))
std::cout << part << "n";
}
打印:
"/"
"tmp"
"foo.txt"
和
for(auto& part : boost::filesystem::path("/tmp/foo.txt"))
std::cout << part.c_str() << "n";
打印
/
tmp
foo.txt
无需担心移动部件
std::vector<std::string> SplitPath(const boost::filesystem::path &src) {
std::vector<std::string> elements;
for (const auto &p : src) {
elements.emplace_back(p.filename());
}
return elements;
}
如果您没有c++ 11 auto,或者正在编写跨平台代码,其中boost::filesystem::path可能是std::wstring:
std::vector<boost::filesystem::path> elements;
for (boost::filesystem::path::iterator it(filename.begin()), it_end(filename.end()); it != it_end; ++it)
{
elements.push_back(it->filename());
}
如果您想手动完成所有操作而不使用任何库,那么这将会有所帮助。它将给定的完整路径拆分为相应的名称,并将它们存储在vector中。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string filePath = "C:\ProgramData\Users\CodeUncode\Documents";
vector<string> directories;
size_t position=0, currentPosition=0;
while(currentPosition != -1)
{
currentPosition = filePath.find_first_of('', position);
directories.push_back(filePath.substr(position,currentPosition-position));
position = currentPosition+1;
}
for(vector<string>::iterator it = directories.begin(); it!=directories.end(); it++)
cout<<*it<<endl;
return 0;
}
输出:C:
ProgramData
Users
CodeUncode
Documents
相关文章:
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 如何将整数值解析为逗号分隔字符串中的单独 int 变量?
- 为什么具有单独字符的字符数组不像字符串文字那样以 null 终止符结尾?
- 在 c++ 中将字符串拆分为单独的变量
- 需要帮助将c字符串从嵌入式SQL提取复制到单独结构中的另一个c字符串
- 正则表达式在开头单独匹配单词,或者在输入结束时通过不重复字符串附加到某些内容但附加到某些内容
- 使用C++预处理器从单独的组件构造版本字符串
- C++银行项目;如何将一组字符串读取为单独的浮点数并添加它们
- 如何将字符串(没有空格)拆分为单独的字符串
- 如何在 c++ 中将字符串分成单独的字符
- 将两个 '' 字符之间的子字符串提取到单独的数组中
- 如何拆分C++字符串以单独获取整个字符串及其某些部分/字符
- 如何解析用户的输入并将每个单独的字符存储为字符串
- 将单独文本文件的段落拆分为单独的字符串
- 布尔值转换为字符串,并将boolalpha与一个方法组合在一起,而不是在打印时单独键入它
- 如何将路径拆分为单独的字符串
- 从文件中读取行并存储在单独的字符串变量中
- 字符串标记为单独的变量
- 以字符串作为输入,但在c++中单独处理字符