关于C++控制台程序遍历文件夹的有关问题
关于C++控制台程序遍历文件夹的问题
1 IntelliSense: "char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 24 26 CharacterRecognitionTrainning
4 IntelliSense: "char *" 类型的实参与 "LPWSTR" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 40 11 CharacterRecognitionTrainning
5 IntelliSense: "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 40 25 CharacterRecognitionTrainning
2 IntelliSense: "WCHAR *" 类型的实参与 "const char *" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 33 14 CharacterRecognitionTrainning
3 IntelliSense: "WCHAR *" 类型的实参与 "const char *" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 34 14 CharacterRecognitionTrainning
------解决方案--------------------
工程-属性里设置使用多字节字符集
------解决方案--------------------
把工程属性里面的字符串用多字节字符集
------解决方案--------------------
CString cStrs("D:\\PicImage\\*.*");
------解决方案--------------------
添加opencv的lib来link
------解决方案--------------------
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <tchar.h>
#include <opencv2/highgui/highgui.hpp>
#include "opencv2/imgproc/imgproc.hpp"
#define LEN 1024
BOOL DirectoryList(LPCSTR Path)
{
WIN32_FIND_DATA FindData;
HANDLE hError;
int FileCount = 0;
char FilePathName[LEN];
// 构造路径
char FullPathName[LEN];
strcpy(FilePathName, Path);
strcat(FilePathName, "\\*.*");
hError =::FindFirstFile(FilePathName, &FindData);
if (hError == INVALID_HANDLE_VALUE)
{
printf("搜索失败!");
return 0;
}
while(::FindNextFile(hError, &FindData))
{
// 过虑.和..
if (strcmp(FindData.cFileName, ".") == 0
|| strcmp(FindData.cFileName, "..") == 0 )
{
continue;
}
// 构造完整路径
wsprintf(FullPathName, "%s\\%s", Path,FindData.cFileName);
FileCount++;
// 输出本级的文件
printf("\n%d %s ", FileCount, FullPathName);
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
printf("<Dir>");
DirectoryList(FullPathName);
}
}
return 0;
}
1 IntelliSense: "char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 24 26 CharacterRecognitionTrainning
4 IntelliSense: "char *" 类型的实参与 "LPWSTR" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 40 11 CharacterRecognitionTrainning
5 IntelliSense: "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 40 25 CharacterRecognitionTrainning
2 IntelliSense: "WCHAR *" 类型的实参与 "const char *" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 33 14 CharacterRecognitionTrainning
3 IntelliSense: "WCHAR *" 类型的实参与 "const char *" 类型的形参不兼容 d:\Project\CV\CharacterRecognitionTrainning\CharacterRecognitionTrainning.cpp 34 14 CharacterRecognitionTrainning
------解决方案--------------------
工程-属性里设置使用多字节字符集
------解决方案--------------------
把工程属性里面的字符串用多字节字符集
------解决方案--------------------
CString cStrs("D:\\PicImage\\*.*");
------解决方案--------------------
添加opencv的lib来link
------解决方案--------------------
工程-属性里设置使用多字节字符集
没按你的方法设
从新写了一段代码
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
CString cStrs("D:\\PicImage");
CStringW strw(cStrs);
LPCWSTR ptr = strw;
hFind = FindFirstFile(ptr, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("FindFirstFile failed (%d)\n", GetLastError());
return 0;
}
else
{
_tprintf (TEXT("The first file found is %s\n"),
FindFileData.cFileName);
}
/*
while(::FindNextFile(hFind, &FindFileData))
{
_tprintf (TEXT("The next file found is %s\n"),
FindFileData.cFileName);