分享

c 文件读取(一)——输入类使用和查找当前程序路径

 豫龙晏子 2017-03-08

鉴于公司人员流动大,设计一个小的日志定位器,首先要读取日志文件

用输入输出流类操作文件比c的stdio更安全和容易,当然任何此类观点都是对大牛除外

首先是查找当前文件路径,如果用GetCurrentDirectory函数的话

问题一:记得不能在打开文件之后,因为这个是当前进程当前目录,而不是进程的镜像文件(.exe)路径,怎么理解呢

假如exe放在:d:\用户目录\我的文档\visual studio 2012\Projects\file,调用GetCurrentDirectory之前如果操作 d:\用户目录\txt 下的文件,那么,最后返回的路径是 d:\用户目录\txt

问题二:

CHAR pathstr[100] ; GetCurrentDirectory(MAX_PATH,pathstr); 这样用的话 'CHAR *' 类型的实参与 'LPWSTR' 类型的形参不兼容

就算 CHAR pathstr[100] 改成 TCHAR pathstr[100]

此时cout pathstr结果却明显是指针的地址(因为要输出的带中文,跟代码是没有问题的)

c++文件读取(一)——输入类使用和查找当前程序路径

c++文件读取(一)——输入类使用和查找当前程序路径

有人会说wcout,宽字符输出,其实还是有问题,如下:

c++文件读取(一)——输入类使用和查找当前程序路径

其实只要在工程属性里改字符节属性即可,如下

c++文件读取(一)——输入类使用和查找当前程序路径

c++文件读取(一)——输入类使用和查找当前程序路径

这样最后小工具就可以找到自己的路径,也就可以读取这个路径下的文件,至于怎么遍历这个路径下的文件将放到下一篇

下面输入流使用的教程很多,只放一些简单的代码和最后的效果运行图:

//ifstream inFile; //inFile.open('test.txt'); ifstream inWordFile('test.txt'); string str; vector vec; while(inWordFile >> str) { vec.push_back(str); } vector::iterator iter; for(iter = vec.begin;iter != vec.end;iter++) { cout < *iter="">< endl;="" }="" string="" linestr;="" while(getline(inwordfile,linestr))="" ---读取行是ok的,只是注释掉而已="" {="" cout="">< linestr="">< endl;="" }="">

c++文件读取(一)——输入类使用和查找当前程序路径

运行效果图:

c++文件读取(一)——输入类使用和查找当前程序路径

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多