如何将CString转换为const char *?我已经尝试了在互联网上找到的所有内容,但我仍然无法转换它们。
请帮忙。
谢谢。
答案 0 :(得分:7)
CString直接转换为const char *
CString temp;
temp = "Wow";
const char * foo = (LPCSTR) temp;
printf("%s", foo);
将打印'foo'
较新版本的MFC也支持GetString()方法:
CString temp;
temp = "Wow";
const char * foo = temp.GetString();
printf("%s", foo);
答案 1 :(得分:3)
简答:使用CT2CA
宏(请参阅ATL and MFC String Conversion Macros)。无论您的项目的“字符集”设置如何,这都将有效。
答案很长:
UNICODE
预处理程序符号(即,如果TCHAR
为wchar_t
),请使用CT2CA
或CW2CA
宏。TCHAR
是char
),CString已经有一个隐式转换为char const*
的运算符(参见CSimpleStringT::operator PCXSTR
)。答案 2 :(得分:0)
如果您的应用程序不是Unicode,则可以简单地转换为const char *
。如果您需要可以修改的GetBuffer()
,请使用char *
方法。
如果你的应用程序是Unicode并且你真的想要char *
,那么你需要转换它。 (您可以使用MultiByteToWideChar()
等功能。)
答案 3 :(得分:0)
首先:定义char * inputString;在your_file.h中
第二:在yourFile.cpp中定义: CString MyString;
MyString = "Place here whatever you want";
inputString = new char[MyString.GetLength()];
inputString = MyString.GetBuffer(MyString.GetLength());
最后两句话将CString变量转换为char *;但要小心,使用CString,你可以拥有毫秒的charcteres,但有char * no。您必须定义char * varible的大小。
答案 4 :(得分:-1)
我知道现在已经很晚了,但我无法使用标记为答案的解决方案。我在互联网上搜索,没有任何对我有用。我通过它来获得解决方案:
char * convertToCharArr(CString str) {
int x = 0;
string s = "";
while (x < str.GetLength()) {
char c = str.GetAt(x++);
s += c;
}
char * output = (char *)calloc(str.GetLength() + 1, sizeof(char));
memcpy(output, s.c_str(), str.GetLength() + 1);
return output;
}