cwchar:179:11: error: ‘::wcscat‘ has not been declared

报错代码

写一个类,为了方便把测试用的main函数写在同一个文件中。

#ifndef _STRING_H
#define _STRING_H

#include<vector>
#include<iostream>
using namespace std;

class myStr{
    vector<char> data;
public:
    myStr(const char* s=NULL){
        for (;s&&*s;++s) data.push_back(*s);
    }
    friend std::ostream& operator<<(std::ostream& out,const myStr& x){
        for (auto c: x.data) out << c;
        return out;
    }
};

int main(){
    myStr a = "Hello World";
    cout << a;
    return 0;
}
#endif

报错

报错信息很长,以下截取一部分:
c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\cwchar:179:11: error: ‘::wcscat’ has not been declared
179 | using ::wcscat;

c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\cwchar:180:11: error: ‘::wcscmp’ has not been declared
180 | using ::wcscmp;

c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\cwchar:181:11: error: ‘::wcscoll’ has not been declared
181 | using ::wcscoll;

c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\cwchar:182:11: error: ‘::wcscpy’ has not been declared
182 | using ::wcscpy;

c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\cwchar:183:11: error: ‘::wcscspn’ has not been declared
183 | using ::wcscspn;

c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\bits\char_traits.h:444:9: error: ‘wcslen’ was not declared in this scope
444 | return wcslen(__s);

原因

#define 的名称和C++自带的重复

解决方案

修改#define的名称,例如改为:

#ifndef _STRING_H__
#define _STRING_H__
/*...*/
#endif

成功运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您编写一个C语言程序,实现您的需求。以下是代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <wchar.h> int main() { // 源文件路径 wchar_t src_path[] = L"E:\\CSV\\"; // 目标文件路径 wchar_t dest_path[] = L"E:\\import\\"; // 列出源文件夹中的所有CSV文件 wchar_t cmd[100] = L"dir /b "; wcscat(cmd, src_path); wcscat(cmd, L"*.csv > files.txt"); system(cmd); // 读取文件列表 FILE* fp = fopen("files.txt", "r"); char line[256]; while (fgets(line, sizeof(line), fp)) { size_t len = strlen(line); if (len > 0 && line[len - 1] == '\n') { line[len - 1] = '\0'; } // 打开源文件 wchar_t src_file[100]; mbstowcs(src_file, line, strlen(line) + 1); wcscat(src_file, L".csv"); FILE* src_fp = _wfopen(src_file, L"rb"); if (!src_fp) { printf("Failed to open file %s\n", line); continue; } // 创建目标文件 wchar_t dest_file[100]; mbstowcs(dest_file, line, strlen(line) + 1); wcscat(dest_file, L".txt"); wcscat(dest_file, L".csv"); wcscat(dest_file, L".unicode"); wchar_t dest_full_path[200]; wcscpy(dest_full_path, dest_path); wcscat(dest_full_path, dest_file); FILE* dest_fp = _wfopen(dest_full_path, L"wb"); if (!dest_fp) { printf("Failed to create file %s\n", dest_file); fclose(src_fp); continue; } // 转换编码并写入目标文件 wchar_t buf[1024]; while (fgetws(buf, sizeof(buf), src_fp)) { fprintf(dest_fp, "%ls", buf); } // 关闭文件 fclose(src_fp); fclose(dest_fp); } // 删除文件列表 fclose(fp); remove("files.txt"); return 0; } ``` 这个程序会列出指定路径中所有的CSV文件,并将它们转换为Unicode编码后保存到指定路径中。您只需要将程序保存为一个名为 `convert.c` 的文件,使用 C 编译器编译后运行即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值