CString 转化为 const char* 以及WideCharToMultiByte用法实例

MFC中 CString转char *的最好用的方法之WideCharToMultiByte MFC中 CString转char *的最好用的方法之WideCharToMultiByte 这样用虽然麻烦了点,但是基本UNICODE或者MBCS的工程都可用 CString ChannelNumber = "\<e name=\"ChannelNo\" ro=\"true\"\>"; DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, ChannelNumber, -1, NULL, NULL, 0, NULL); char* numb 阅读详情

今天写一个MFC的小工程,遇到了需要CString对cosnt char*的转换,查阅了网上好多资料,牛们的留言,

可是好多都不能用,之前碰到过字符处理问题,还蛮顺利解决的,今天纠结了好久,就写个贴给遇到同样问题

的朋友.

实例:需要把一个CString的路径字符串转化为const char*.(编码环境unicode).

方法一:

 

  1. void CDataStore::LoadFile(CString FileName)  
  2. {  
  3.   
  4.     FILE *Fp;  
  5.     USES_CONVERSION;  
  6.     const char* Str = T2A(FileName.GetBuffer());  
  7.     if( ( Fp = fopen( Str, "r" ) ) == NULL )  
  8.     {  
  9.         return ;  
  10.     }  
  11. }  

 

由于在unicode环境下,通过GetBuffer读取字符串缓冲区时,读入的时宽字节指针,

于是需要转换为单字节指针,这就可以通过系统宏T2A(W2A)来实现,不要忘了

USES_CONVERSION;...

方法二:

 

  1. void CDataStore::LoadFile(CString FileName)  
  2. {  
  3.     FILE *Fp;  
  4.   
  5.          char Str[1024];  
  6.          WideCharToMultiByte(CP_ACP,0,FileName,-1,Str,1024,NULL,NULL);  
  7.     LPTSTR Str = FileName.GetBuffer();  
  8.     if( ( Fp = fopen( Str, "r" ) ) == NULL )  
  9.     {  
  10.         return ;  
  11.     }  

 

可以通过系统函数WideCharToMultiByte()处理短字节和宽字节的转换,网上说的

(LPCTSTR)等的强制转换在unicode下是不行的,他不是const char*而是const wchar_t*

所以不能使用强制转换来实现CString 到 const char *!

以上代码在VS2010中编译运行通过!

FPGA实现AXI-Stream通信 本文介绍了在FPGA中实现AXI-Stream接口的工业级方案,重点解析了核心协议信号(TVALID/TREADY/TDATA/TLAST)与可选扩展信号,并提供了Verilog最小化实现示例。文章详细阐述了握手协议规则、时序约束方法,以及吞吐量优化技巧(如寄存器切片和双缓冲策略),同时给出了跨时钟域处理的异步FIFO解决方案。此外,还包含验证调试方法(Testbench结构和ILA触发设置)和典型应用场景(视频处理/网络传输),最后提供了资源消耗参考数据。该实现方案严格遵循Xilinx/Intel官方规范 阅读详情

相关推荐

基于NXP1778的CAN自动波特率检测

一、概念 NXP1778芯片内部自带一个CAN控制器。CAN模块由两部分组成:控制器和验收滤波器。所有的寄存器和RAM都以32位字宽度来访问。 CAN自动波特率检测主要用于以一种CAN的转换的产品中。产品中CAN部分的波特率以前都是通过网页中修改然后配置下去的,依据实际情况的考虑,如果CAN部分的波特率能够根据客户设备的改变而自动改变,将会增加其灵活性。   二、原理 根据CAN控制器的

菜鸟的痕迹专栏 5273

UniCode 下CString 转 char*,利用WideCharToMultiByte进行转换,中文乱码的解决方案

UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家分享。 先总结一下网上找到的三种转换的方法: 方法一:使用函数s

zhangjunyu0606的专栏 1494

基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案分享

各位FPGAer周末愉快,今天熊猫君分享一个基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案。

haoxingheng的专栏 1447

widechartomultibyte cstring数组错误_CString 类线程不安全问题

1 问题描述 CString 类线程不安全问题和解决过程,测试运行一段时间后,后台软件崩了,软件重启后,恢复正常,隔三四小时又出现异常,Debug模式下调用堆栈,发现问题出现在strname = pSystemInfo-> szName 这一行。程序中定义结构体(相关的成员变量):typedef struct _SYSTEMINFO_CONTEXT { CString szMac;...

weixin_42378374的博客 372

非华为电脑也能用上鸿蒙生态?手把手教你给Win10/Win11装上最新华为电脑管家(附移动应用引擎开启方法)

本文详细介绍了如何在非华为品牌的Windows 10/11电脑上安装华为电脑管家并启用移动应用引擎,实现鸿蒙生态的无缝协同体验。从BIOS设置到安装步骤,再到性能优化和常见问题解决,手把手教你解锁跨设备高效工作流。

weixin_42542669的博客 4249

别让PEX和后仿真拖后腿:Calibre与Virtuoso ADE联调的那些‘坑’与最佳实践

本文深入探讨了Calibre与Virtuoso ADE在PEX寄生参数提取和后仿真联调中的常见问题与解决方案。针对DRC/LVS验证通过后出现的网表导入错误和仿真波形异常,提供了七大典型场景的实战经验,包括PEX提取模式选择、CalibreView生成细节、环境变量配置等关键环节的最佳实践,助力工程师高效完成芯片设计验证。

weixin_33695450的博客 393

CString与const char*互转

前篇: ①CString强制类型转换为const char*,在变量前加上:(char *)(LPCTSTR),这样做虽不会报错,但其转换后的值可能是乱码,不推荐这样做! ②利用中间变量(string类型),原理: 1)const char*类型可自动装换为CString。 CString cs("Hello");   2)CString类型不能自动转换为const char*。但可

阿a楞的博客 1万+

Allegro23.1新功能之软件自带阻抗计算工具操作指导

Allegro升级到了23.1后,软件新增了一个自带阻抗计算的功能,如下图。Propagation velocity:传输速度,单位是光速的多少倍。Dielectric constant输入介电常数,这里使用常规4。新功能之软件自带阻抗计算工具。如何使用,具体操作如下。

weixin_54787054的博客 783

CString转换为const char*

CString str1=_T("Hello"); const size_t strsize = (str1.GetLength() + 1) * 2; // 宽字符的长度; char * pstr = new char[strsize]; //分配空间; size_t sz = 0; wcstombs_s(&sz, pstr, strsize, str1, _TRUNCATE); delete pstr;//释放内存

m0_37346206的博客 4132

一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制

本文描述串口DMA收/发机制设计,及STM32串口DMA收/发实现。

只要思想不滑坡,想法总比问题多。 5万+

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

孤独的单刀 5475

CString 和 const char* 的相互转化(UNICODE)

1. const char* To CString const char* c;c = "abcdef";CString s;int len = strlen(c);TCHAR* c1 = (TCHAR*)malloc(sizeof(TCHAR)*len);MultiByteToWideChar( CP_UTF8 , 0 , c , len+1 , c1 , l

cosair的专栏 4061

实时数字人SoulX-FlashHead 音视频不对齐解决

【代码】实时数字人SoulX-FlashHead 音视频不对齐解决。

jacke121的专栏 201

Unicode项目中CString转const char*,string 转CString

前言 做MFC开发,Unicode的项目。用到的字符串都是CString的。 但是,好些API需要的是string 或 char* 就需要转换。 所以,就需要深入了解CString的格式,string的格式,char*的格式,才好下手。 下面详细介绍了如何将CString 转换为 const char*, 也等价于将CString 转换为 std::string, 或cv::String 。 cv::String是OpenCV里面的。这个问题,是在调用 cv::imwrite();函数中遇到的..

优快云的博客 1554

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VS2010 将CString转换成char* 或const char*

VS2010 将CString转换成char* 或const char*网上介绍了各种方法,令你眼花缭乱, 但很多方法其实在vs2010下是不凑效的,他们说的大部分方法都是在VC6.0下的转换。而在VS2010的Unicode默认编程环境下, 经过试了N回之后还是不成功之后,会令你心烦意乱。下面是网上列举的一些转换的方法:CString转char*,如: char * a = (LPSTR)

徐富元 2414

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++ Cstring 转 const * char (Unicode 及非Unicode)

申明:本文非笔者原创,原文转载自:http://blog.youkuaiyun.com/qqim123/article/details/52367179 Unicode 编码的: 最简单的办法 #include CString m_toSend = "中文"; USES_CONVERSION; char *psz = T2A(m_toSend);

计算机视觉小菜鸟的专栏 3274

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

error C2664:不能将参数 1 从“CString”转换为“const char *”

提示错误“error C2664: "gethostbyname": 不能将参数 1 从"CString"转换为"const char *"”。 CString host; lpHost = gethostbyname(host); 最快的解决办法: Since this function requires Ansi string, I think you

Karen的博客 1万+

CString,CStringA,DWORD,CHAR,string,const char*等字符类型间的相互转化

字符类型之间的相互转化: 1.c_str()函数 c_str 函数可把表达式转换为字符串(string)类型。 注释:若表达式的类型不同, c_str 输出的结果也会有所不同。 2.CString 转 CStringA 1) 使用UNICODE字符集编程时,可能需要使用到那些不支持UNICODE的库,此时就 需要将CString转成CStringA. 方法: C...

weixin_45116749的博客 982

CString转const char*:Windows C++字符串编码转换与安全实践

在C++编程中,字符串处理是基础且频繁的操作,尤其涉及不同编程范式间的数据交互。C++标准库的string类与C语言风格的字符数组指针(const char*)代表了两种不同的内存管理与资源所有权模型。理解字符串类的内部实现原理,对于编写安全、高效的代码至关重要。在Windows平台开发中,MFC/ATL提供的CString类因其高度封装和自动内存管理特性被广泛使用,但其与原生C风格字符串的互操作常引发编译错误和运行时问题,这体现了面向对象与过程式编程范式在资源表示方式上的差异。其技术价值在于通过封装简化了

weixin_33946605的博客 431

Unicode下CString与char *转换

Unicode下CString与char *转换   在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi-Byte Character Set),这样导致在VC6.0中非常简

我不寂寞,因為有寂寞陪著我。 801

CString 转const char * 和 CString 转char *

CString是定长的,是常量; 一、CString 转const char *方法: CString str = _T("XXXXX"); const char * strTest = (LPCSTR)(LPCTSTR)str; 理解:CString是永远都可以转成LPCTSTR的;(不管是工程是UNICODE还是多字节编码)              LPCTSTR是永远都可以转

明月清风 精进不止 903

BSTR、char* 和 CString 之间的转换

  (1) char*转换成CString  若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:char chArray[] = "This is a test"; char * p = "This is a test";   或LPSTR p = "This is a test";   或在已定义Unicode应的用

蜡笔小辛的专栏 1204

Unicode 下 CString 与 char* 相互转换的问题

CString中存储的字符的数据类型为wchar_t类型。 一、CString转换为char * (1)方法一:使用wcstombs() #include using namespace std; #include int main() { CString str = L"liuxijiao计算机网络"; wchar_t *pWChar = str.GetBuffe

orange_xxx的专栏 651

Unicode环境下宽字符CString与ANSI字符const char* 的转换

    今天在unicode环境下写程序,当将CString转换成const char*类型是出现问题报错:"cannot convert parameter 1 from wchar_t* to const char* "。搜索良久终于找到如下三种方法可以解决:     第一: 在COM环境下可使用如下方法,    CString strSQL;    strSQL.Fo

markqian86的专栏 1067
上一篇: WAV文件格式研究笔记
下一篇: C++的static关键字
helloVIA
博客等级 码龄16年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值