有关编程中错误的问题

sinat_42272412 2018-05-23 04:29:25
大佬们,我调用了一个在unicode字符集属性下写的算法程序,但是我的工程是多字节字符集,如果我改字符集会出现更多的错误,怎么办啊,现在就这两个地方出错,求大神教教怎么改。救命!!!!!
...全文
307 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2018-05-23
  • 打赏
  • 举报
回复

// 利用winWIN32_FIND_DATA读取文件下的文件名
void EnumFiles(const char* filePath)
{ 
  char tempFilePath[MAX_PATH + 1];
  sprintf_s(tempFilePath, "%s\\*.*", filePath);

  WIN32_FIND_DATAA file;
  HANDLE handle = FindFirstFileA(tempFilePath, &file);
  if (handle != INVALID_HANDLE_VALUE)
  {
    do
    {
      printf("%s\n", file.cFileName);

      if(0
        || strcmp(file.cFileName, ".") == 0
        || strcmp(file.cFileName, "..") == 0
        || 0) //. ..
      {
        continue;
      }

      if(file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //directory
      {
        printf("is directory\n");
        continue;
      }

      //file ……


    } while (FindNextFileA(handle, &file));
    
    FindClose(handle);
  }
}
schlafenhamster 2018-05-23
  • 打赏
  • 举报
回复
打开 笔记本 把 那个 txt 文件 从 UNICODE 改为 ansi
sinat_42272412 2018-05-23
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
直接使用Ansi函数, 这样就不用转换了 WIN32_FIND_DATAA file; FindFirstFileA FindNextFileA
改了没变化啊大佬
sinat_42272412 2018-05-23
  • 打赏
  • 举报
回复
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include<iostream> #include <stdio.h> #include <windows.h> int threshold_diff1 = 30; //设置简单帧差法阈值 37 int threshold_diff2 = 12;//设置简单帧差法阈值 加黑帽45-47 不加25+ 什么都不加12-14 #define threshold_diff3 50//50 double ROI = 0.87l; //设置ROI #define mode 1 //手动阈值 #define threshold_diff3 50//50 #define threshold_diff4 74//74-77 #define DirectR 17//导向滤波半径 using namespace cv; using namespace std; // LPCWSTR转string std::string WChar2Ansi(LPCWSTR pwszSrc) { int nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, NULL, 0, NULL, NULL); if (nLen <= 0) return std::string(""); char* pszDst = new char[nLen]; if (NULL == pszDst) return std::string(""); WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, pszDst, nLen, NULL, NULL); pszDst[nLen - 1] = 0; std::string strTemp(pszDst); delete[] pszDst; return strTemp; } // 利用winWIN32_FIND_DATA读取文件下的文件名 void readImgNamefromFile(const char* fileName, vector <string> &imgNames) { // vector清零 参数设置 imgNames.clear(); WIN32_FIND_DATA file; int i = 0; char tempFilePath[MAX_PATH + 1]; char tempFileName[50]; // 转换输入文件名 sprintf_s(tempFilePath, "%s/*", fileName); // 多字节转换 WCHAR wstr[MAX_PATH] = { 0 }; MultiByteToWideChar(CP_ACP, 0, tempFilePath, -1, wstr, sizeof(wstr)); // 查找该文件待操作文件的相关属性读取到WIN32_FIND_DATA HANDLE handle = FindFirstFile(wstr, &file); if (handle != INVALID_HANDLE_VALUE) { FindNextFile(handle, &file); FindNextFile(handle, &file); // 循环遍历得到文件夹的所有文件名 do { sprintf(tempFileName, "%s", fileName); imgNames.push_back(WChar2Ansi(file.cFileName)); imgNames[i].insert(0, tempFileName); i++; } while (FindNextFile(handle, &file)); } FindClose(handle); }
sinat_42272412 2018-05-23
  • 打赏
  • 举报
回复
这是这部分整个的代码: #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include<iostream> #include <stdio.h> #include <windows.h> int threshold_diff1 = 30; //设置简单帧差法阈值 37 int threshold_diff2 = 12;//设置简单帧差法阈值 加黑帽45-47 不加25+ 什么都不加12-14 #define threshold_diff3 50//50 double ROI = 0.87l; //设置ROI #define mode 1 //手动阈值 #define threshold_diff3 50//50 #define threshold_diff4 74//74-77 #define DirectR 17//导向滤波半径 using namespace cv; using namespace std; // LPCWSTR转string std::string WChar2Ansi(LPCWSTR pwszSrc) { int nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, NULL, 0, NULL, NULL); if (nLen <= 0) return std::string(""); char* pszDst = new char[nLen]; if (NULL == pszDst) return std::string(""); WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, pszDst, nLen, NULL, NULL); pszDst[nLen - 1] = 0; std::string strTemp(pszDst); delete[] pszDst; return strTemp; } // 利用winWIN32_FIND_DATA读取文件下的文件名 void readImgNamefromFile(const char* fileName, vector <string> &imgNames) { // vector清零 参数设置 imgNames.clear(); WIN32_FIND_DATA file; int i = 0; char tempFilePath[MAX_PATH + 1]; char tempFileName[50]; // 转换输入文件名 sprintf_s(tempFilePath, "%s/*", fileName); // 多字节转换 WCHAR wstr[MAX_PATH] = { 0 }; MultiByteToWideChar(CP_ACP, 0, tempFilePath, -1, wstr, sizeof(wstr)); // 查找该文件待操作文件的相关属性读取到WIN32_FIND_DATA HANDLE handle = FindFirstFile(wstr, &file); if (handle != INVALID_HANDLE_VALUE) { FindNextFile(handle, &file); FindNextFile(handle, &file); // 循环遍历得到文件夹的所有文件名 do { sprintf(tempFileName, "%s", fileName); imgNames.push_back(WChar2Ansi(file.cFileName)); imgNames[i].insert(0, tempFileName); i++; } while (FindNextFile(handle, &file)); } FindClose(handle); }
zgl7903 2018-05-23
  • 打赏
  • 举报
回复
直接使用Ansi函数, 这样就不用转换了 WIN32_FIND_DATAA file; FindFirstFileA FindNextFileA
内容概要:本文详细介绍了Anaconda的下载、安装与配置方法(2025最新版)。Anaconda是一个开源的Python/R数据科学集成开发平台,预装了1500多个科学计算库,并提供conda包管理和环境管理功能。文章首先列出了系统要求,接着分别讲述了适用于不同操作系统的下载方式,包括官方下载和国内镜像下载。然后,具体讲解了Windows、macOS和Linux三种操作系统的安装步骤,以及环境变量的手动配置方法。此外,还提供了验证安装是否成功的命令和配置国内镜像源的方法,以提高下载速度。最后,列出了一些常用conda命令和常见问题的解决方案。 适合人群:从事数据科学、机器学习领域的研究人员和开发者,特别是需要频繁使用Python科学计算库的用户。 使用场景及目标:①帮助用户快速搭建Python开发环境,尤其是需要多个Python版本共存或隔离环境的情况下;②解决因网络原因导致的下载速度慢的问题;③提供详细的安装指南,确保安装过程顺利进行;④指导用户正确配置环境变量,避免常见的安装后无法使用的错误。 阅读建议:由于Anaconda涉及多平台安装和配置,建议读者根据自己的操作系统选择相应的章节重点阅读,并严格按照步骤操作。对于初次使用者,建议先从简单的安装入手,再逐步学习环境管理和包管理的相关命令。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧