鉴于公司人员流动大,设计一个小的日志定位器,首先要读取日志文件
用输入输出流类操作文件比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结果却明显是指针的地址(因为要输出的带中文,跟代码是没有问题的)
有人会说wcout,宽字符输出,其实还是有问题,如下:
其实只要在工程属性里改字符节属性即可,如下
这样最后小工具就可以找到自己的路径,也就可以读取这个路径下的文件,至于怎么遍历这个路径下的文件将放到下一篇
下面输入流使用的教程很多,只放一些简单的代码和最后的效果运行图:
//ifstream inFile; //inFile.open("test.txt"); ifstream inWordFile("test.txt"); string str; vector<string> vec; while(inWordFile >> str) { vec.push_back(str); } vector<string>::iterator iter; for(iter = vec.begin();iter != vec.end();iter++) { cout << *iter << endl; } //string linestr; //while(getline(inWordFile,linestr)) ---读取行是ok的,只是注释掉而已 //{ // cout << linestr << endl; //}
运行效果图: