在博客里找到了一个C++遍历文件夹的代码,有一段是这个
vector<string>file_vec = statdir.BeginBrowseFilenames(“*.*”);
for (vector<string>::const_iterator it = file_vec.begin(); it < file_vec.end(); ++it)
cout << *it << endl;
这样运行结果是一个一个输出指定文件夹内文件的路径,本人想要把路径保存在数组里,该怎么做呢?刚刚开始学,求指点~
vector<string>file_vec = statdir.BeginBrowseFilenames(“*.*”);
for (vector<string>::const_iterator it = file_vec.begin(); it < file_vec.end(); ++it)
cout << *it << endl;
这样运行结果是一个一个输出指定文件夹内文件的路径,本人想要把路径保存在数组里,该怎么做呢?刚刚开始学,求指点~
解决方案
5
多学学基本的东西,等std::filesystem
http://en.cppreference.com/w/cpp/experimental/fs/directory_iterator/begin
http://en.cppreference.com/w/cpp/experimental/fs/directory_iterator/begin
5
vector<string>file_vec,这不是本来就在数组里吗,你还保存个啥?
filesystem 还不是标准呢。
filesystem 还不是标准呢。
5
vector不就是数组吗
5
vector有长度,根据长度new一个原始数组,然后把vector中的元素copy过去即可
5
vector可以直接当C风格的数组用
file_vec[0].c_str()
file_vec[0].c_str()
5
10
代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
void HexDump(char *buf,int len,int addr) { int i,j,k; char binstr[80]; for (i=0;i<len;i++) { if (0==(i%16)) { sprintf(binstr,"%08x -",i+addr); sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]); } else if (15==(i%16)) { sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]); sprintf(binstr,"%s ",binstr); for (j=i-15;j<=i;j++) { sprintf(binstr,"%s%c",binstr,("!"<buf[j]&&buf[j]<="~")?buf[j]:"."); } printf("%s\n",binstr); } else { sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]); } } if (0!=(i%16)) { k=16-(i%16); for (j=0;j<k;j++) { sprintf(binstr,"%s ",binstr); } sprintf(binstr,"%s ",binstr); k=16-k; for (j=i-k;j<i;j++) { sprintf(binstr,"%s%c",binstr,("!"<buf[j]&&buf[j]<="~")?buf[j]:"."); } printf("%s\n",binstr); } }
使用以上代码观察你认为的数据对应的实际字节值。