首页 > 代码库 > C杂谈
C杂谈
最近在做关于C的项目开发,记录一下有关C的操作,比较杂乱
1.利用System进行文件数量统计:
1)
1 system("dir /b /s /ad d:\\mydir\\*.* | find /c \":\" >d:\\ndirs.txt");
//读文件d:\\ndirs.txt的内容即d:\\mydir目录下的文件夹数
1 system("dir /b /s /a-d d:\\mydir\\*.* | find /c \":\" >d:\\nfiles.txt");
//读文件d:\\nfiles.txt的内容即d:\\mydir目录下的文件数
顺带也写一下读取文件以及将Char类型字符转化为Int类型代码
1 ifstream in; 2 string str; 3 in.open("D:\\nfiles.txt"); 4 if (!in.is_open()){ 5 cout << "Error opening file"; exit(1); 6 } 7 else{ 8 std::copy(std::istream_iterator<unsigned char>(in),std::istream_iterator<unsigned char>(), back_inserter(str)); 9 } 10 filecount = atoi(str.c_str());
2)
1 HANDLE hFind; 2 WIN32_FIND_DATA dataFind; 3 BOOL bMoreFiles = TRUE; 4 5 //m_strDir就是你要指定的路径 6 hFind = FindFirstFile(s2ws(add + "\*.*").c_str(), &dataFind);//找到路径中所有文件 7 8 //遍历路径中所有文件 9 while (hFind != INVALID_HANDLE_VALUE&&bMoreFiles == TRUE) 10 { 11 if (dataFind.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)//判断是否是文件 12 { 13 filecount++; 14 } 15 bMoreFiles = FindNextFile(hFind, &dataFind); 16 } 17 FindClose(hFind);
这种方法个人使用存在BUG,当文件数量大于1时,filevount不会继续增加,后续看到更改方法继续改进。
2.string转LPCWSTR(C文件拷贝)
1 wstring s2ws(const std::string& s) 2 3 { 4 int len; 5 int slength = (int)s.length() + 1; 6 len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0); 7 wchar_t* buf = new wchar_t[len]; 8 MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len); 9 std::wstring r(buf); 10 delete[] buf; 11 return r; 12 } 13 14 CopyFile(s2ws(source).c_str(), s2ws(des).c_str(), FALSE);//false代表覆盖,true不覆盖
3.C语言遍历文件夹下文件
1 long hFile = 0; 2 struct _finddata_t fileInfo; 3 string pathName, exdName; 4 5 if ((hFile = _findfirst(pathName.assign(path).append("\\*").c_str(), &fileInfo)) == -1) { 6 return; 7 } 8 do { 9 printf("%s\n", path.c_str()); 10 printf("%s\n", fileInfo.name); 11 Mat library_img = imread(path + "/" + fileInfo.name); 12 } while (_findnext(hFile, &fileInfo) == 0); 13 _findclose(hFile);
C杂谈
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。