CString 转化成 const char* 类型

写程序的时候经常会遇到无法将“CString”转换为“const char *”的错误,这里我找到了一个解决办法,与大家分享下:

CString cs = _T("123123");
const size_t strSize = (cs.GetLength() + 1) * 2;
char *p = new char[strSize];
size_t sz = 0;
wcstombs_s(&sz, p, strSize, cs, _TRUNCATE);
int n = atoi((const char*)p);

经过这样转换后,运行程序就不会出现上述的报错!

时间: 2024-10-10 15:28:55

CString 转化成 const char* 类型的相关文章

MFC中字符串赋值出现“Error:“const char*”类型的实参与“LPCWSTR”类型的形参不兼容”错误的解决方法

在编译MFC工程时,写下面代码出现了“Error:“const char*”类型的实参与“LPCWSTR”类型的形参不兼容”的错误. TextOut(hdc,0,0,"Mercedes",strlen("Mercedes")); 这是由于工程采用Unicode编码,这时“Mercedes”字符串类型为“wchar_t*”, 这时应该这样赋值: TextOut(hdc,0,0,_T("Mercedes"),strlen("Mercedes

vs2017中char* str = "1234asd56";会报错,——const char*类型的值不能用于初始化char*类型的实体

原因: "1234asd56"是常量 ,正确的写法本身就是:const char* str = "1234asd56"; 之所以之前的vs版本可以写成char*是历史遗留原因,在vs2017中如题目中写时,程序可能就崩溃了,新版本VS对这个进行了更严格的控件 原文地址:https://www.cnblogs.com/shixisheng/p/9181938.html

Error:const char* 类型的实参和LPCWSTR类型的形参不兼容的解决方法。

在C++的Windows 应用程序中经常碰到这种情况. 解决方法: 加入如下转换函数: LPCWSTR stringToLPCWSTR(std::string orig) { size_t origsize = orig.length() + 1; const size_t newsize = 100; size_t convertedChars = 0; wchar_t *wcstring = (wchar_t *) malloc(sizeof(wchar_t) *(orig.length()

"const char *" 类型的值不能用于初始化 "char *" 类型的实体

用vs2019发现会出现这样的问题 最后发现只要设置一下就解决了,解决方案如下: 右击该项目,选择属性->c/c++->语言->将符合模式改为否就行了... 设置之后程序没有再报错,问题解决了 原文地址:https://www.cnblogs.com/YLJ666/p/12293773.html

const char* to char*(当函数传递参数时)

来自 https://blog.csdn.net/rongrongyaofeiqi/article/details/52442169 https://blog.csdn.net/hebbely/article/details/79577880 简述: 1) char*转string:可以直接赋值. 2) char[]转string:可以直接赋值. 3) char*转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数. 4) string转char[

[转载] C++ string, const char*, char* 之间互相转换

1, string转const char* 类型 string str = "abcdef"; const char* con_str = string.c_str() 2, const char*转string 类型 直接赋值 const char* con_str = "abc"; string str(con_str); 3, string转 char* 类型 借助strcpy函数 string str= "abc"; char* chr;

在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?

今天在做 COS脚本解释器的时候,遇到了这个问题 先了解一下 LPCTCHAR 这个东东 LPCTSTR用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串. 那么什么叫UNICODE(统一码)??? 背景知识:    计算机发明后,为了在计算机中表示字符,人们制定了一种编码,叫ASCII码.ASCII码由一个字节中的7位(bit)表示,范围是0x00 - 0x7F 共128个

深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p

由于没有const*运算,const实际上修饰的是前面的char*,但不能在定义时转换写成 const(char *)*p,因为在定义是"()"是表示函数. 三.深入理解7种组合 (0)程序 在执行时为其开辟的空间皆在内存(RAM)中,而RAM里的内存单元是可读可写 的:指针只是用来指定或定位要操作的数据的工具,只是用来读写RAM里内存单元的工作指针 .若对指针不加任何限定,程序中一个指针可以指向RAM中的任意位置(除了系统敏感区,如操作系统内核所在区域)并对其指向的内存单元进行读和写

【转】深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p

一.可能的组合: (1)const char*p (2)char const*p (3)char *const p(4)const char **p (5)char const**p (6)char *const *p (7)char **const p 当然还有在(5).(6).(7)中再插入一个const的若干情况,不过分析了以上7中,其他的就可类推了! 二.理解助记法宝: 1.关键看const 修饰谁. 2.由于没有 const *的运算,若出现 const * 的形式,则const实际上