在C ++中将char数组转换为CString

问题描述

我无法将char *转换为CString。.最后2条打印行不打印任何内容...我需要将它作为cstring的一部分,以便能够将其传递给函数

char result[500];
strcpy(result,"\\\\.\\pipe\\");                    
strcat(result,a["BLOB"][i].GetString());// just appending to "result" a string I am reading from json file..
CString  temp(result);
printf("\n1-The pipeName we are looking at is %s \n",result);
printf("\n2-The pipeName we are looking at is %s \n",temp);
printf("\n3-The pipeName we are looking at is %s \n",CString(result,500));

解决方法

printf很粗糙。将%sprintf一起使用将假定您传递给它的内容中的第一个指针大小的字节实际上是指向字符串的指针(也称为char*)。

CString可能正确,也可能不正确。在您的情况下,似乎并非如此。

要使用printf,您需要执行以下操作:

printf("\n2-The pipeName we are looking at is %s \n",temp.GetString());

否则,请停止使用printf并使用类型安全性更高的内容,例如cout

,

将字符串直接构建到order中,并在打印时使用内置到CString的强制转换。

const char *
,

printf()怎么知道CString是什么?什么课?如何将CString转换为C样式的字符串?

这按预期工作。

基于MFC / WFC还提供CString的假设,您正在寻找的内容可能已记录在here中。