c++ - 将 boost::filesystem::path 转换为字符?
问题描述
我已经弄清楚如何将 boost 路径传递给所需的格式,但是我在弄清楚将 path.stem 传递到 char 数组时遇到了一些问题,然后对文件名进行一些检查并采取正确的措施
需要读取文件名并检查然后操作中的下一个可用数字,我打算使用 for 循环将数字放入 char 数组中,然后与这个单独的计数器进行比较
我怎样才能将 path() 逐个字符输入到数组中 - 或者有更好的方法!
int count(boost::filesystem::path input) {
cout << "inputzz : " << input << endl;
char data;
wstring winput;
for (int a = 0; a < 4;){
//boost::filesystem::absolute(input).string();
//cout << input.generic_string() << endl;
(input.generic_string()) >> data;
data << (boost::filesystem::path()input.generic_string());
//a++
};
解决方案
海合会:
给定 a bfs::path p
,p.c_str()
您可以访问以 null 结尾的char*
数组。
const char* c = p.c_str();
完整示例:
#include<iostream>
#include<boost/filesystem/path.hpp>
int main(){
boost::filesystem::path p("~/.bashrc");
const char* c = p.c_str();
std::cout << c << '\n';
char c2[99];
std::strcpy(c2, p.c_str());
std::cout << c2 << '\n';
}
MSVC:
char
不是所有系统的底层表示。Windows
例如,它wchar_t
是. 出于这个原因,可能需要使用路径的值类型,如const boost::filesystem::path::value_type* c = p.c_str();
修改其余代码,例如使用通用的std::copy
.
或者,可以在此处wchar_t *
找到将 a 转换为 a的示例代码。char *
推荐阅读
- java - JdbcSQLException:唯一索引或主键违规
- android - 为什么 Android 的 allowBackup 不起作用?
- php - 验证 reCaptcha v2 复选框是否已勾选
- angular - 为什么我的 Angular 代码没有按顺序打印/运行?
- php - 将 xampp 升级到最新版本和 php 7.1,但 php 在我的计算机中仍然是 php 5.6
- highcharts - x 轴上标签的宽度,在 Highcharts 中具有分组类别
- c - 无法连接到 Twitch IRC 服务器,IP 地址问题,C 语言
- python - 具有自定义持续时间的计时器/倒计时?
- c# - OpenXmlSDK 无法读取手动创建的 xlsx 文件:'指定的包无效。主要部分不见了。
- typescript - 我如何从一个安静且统一的 API 中消费?