C++文件处理的几点操作
来源:互联网 发布:宁波房产最新成交数据 编辑:程序博客网 时间:2024/05/28 15:40
<span style="font-family: Arial, Helvetica, sans-serif;">由于整理图片需要用到一些简单的文件处理操作,将遇到的tips记录下来,以备后用:</span>
1、关于新建文件夹
char num_tmp[10];itoa(j,num_tmp,10);char *new_dir="F://gt_db//";string my_dest_dir=dest_dir+num_tmp+"//";char char_dest_dir[50];strcpy(char_dest_dir,new_dir); //字符串复制strcat(char_dest_dir,num_tmp); //字符串连接if (_mkdir( char_dest_dir ) == 0) //新建文件夹
利用上面程序可以循环新建文件夹 ,需要用到头文件 #include <direct.h>。如果此文件夹已存在,则不会在新建。上面程序中还含有简单的字符串操作。
2、关于在文件中续写:
<pre name="code" class="cpp">file.open("annotation.txt",ios::app);上面这句话可以实现在文件中续写内容,不过这个文件事先建立好(我是这么做的),需要的时候直接打开就行。起作用的就是后面的ios::app。
3、保存图片:
Mat faceRGB=img(maxface);
imwrite(my_dest_dir+imgname,faceRGB);
第一句是从原图中截图去骗,maxface是cv::rect的变量,img为cv::mat的文件。
第一个参数为图片全路径名(包括位置和文件名),第二个参数为mat图片。
4、删除文件操作:
string deleteimg_str=my_src_dir+imgname;const char *deleteimg=deleteimg_str.c_str();if (DeleteFile(deleteimg)) printf("Removed %s.\n",deleteimg_str); else perror("remove"); return 0;
开始用的是remove函数,提示无法删除;于是就用了DeleteFile函数,但是注意里面的参数为LPCSTR格式,我用的是const char*,在项目设置中设置字符集为未设置,默认是使用Unicode的,这个地方注意改一下,改为未设置。在Debug下可以用const char*作为DeleteFile的参数,但是在Release模式下需要用下面6点所说的LPCSTR格式的。
5、图片保存:
imwrite(my_dest_dir+"//"+imgname,img);
用imwrite保存图片,发现一个问题就是原图为18.9k,保存后新图30多k。而且如果原来保存的位置含有文件名相同的文件们,则会进行替换。
6、关于string到的LPCSTR转换:
string deleteimg_str=my_src_dir+imgname;const char *deleteimg=deleteimg_str.c_str();size_t size = deleteimg_str.length();wchar_t *buffer = new wchar_t[size+1];MultiByteToWideChar( CP_ACP, 0, deleteimg_str.c_str(), size, buffer, size * sizeof(wchar_t) );buffer[size] = 0; // 确保以 '\0' 结尾
buffer中就含有需要的LPCSTR格式内容,用完后记得delete buffer;
7、DeleteFile一直无法删除:
用GetLastError函数查看,在Visual C++ 中,可以在监视窗口添加 $err,hr 一行来实时显示错误。发现错误代码是5,就是【5】-拒绝访问。所以修改文件夹属性。
8、不适用imwrite来幅值图片,同样适用于一般文件的复制:
_mkdir( char_dest_dir );string OldFileName=src_dir+imgname;string NewFileName=my_dest_dir+"//"+imgname;LPCTSTR lpOldFileName=OldFileName.c_str();LPCTSTR lpNewFileName=NewFileName.c_str();CopyFile(lpOldFileName, //pointer to name of an existing filelpNewFileName, //pointer to filename to copy toTRUE //flag for operation if file exists 设为TRUE表示目标文件存在的话就复制失败 );
使用的是Copyfile函数。
0 0
- C++文件处理的几点操作
- Python 文件处理的几点注意事项
- C++文件操作需要注意的几点
- 关于文件流设备操作函数的几点注意
- C中操作文件的几种模式
- 异常处理注意的几点问题
- C++异常处理的几点注意事项
- 关于异常处理的几点建议
- mysql处理字符串的几点总结
- 关于跨域的几点处理
- java 输入输出操作的几点经验
- python操作MySQL的几点经验之谈
- [C] const 的几点用法
- 学习C的几点体会
- c语言的几点复习
- 关于c语言的几点
- C语言编程的几点经验
- 关于C语言的几点总结
- 带你走近AngularJS - 体验指令实例
- thinkphp memcache的使用
- 遍历目录下面所有的文件夹和文件
- 写一个验证邮箱函数
- 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
- C++文件处理的几点操作
- 预防sql攻击
- 查询百度关键词排名代码 php
- php curl 多线程抓取
- php curl 模拟登录网站
- poj 3368 RMQ
- php 通过cookie登录网站(请自己下载snoopy类库)
- PHP 获取访客信息类
- mysql 账户管理