问题:如何在C ++ MFC中将CString转换为const char *

时间:2011-03-30 22:05:03

标签: c++ visual-c++ mfc

如何将CString转换为const char *?我已经尝试了在互联网上找到的所有内容,但我仍然无法转换它们。

请帮忙。

谢谢。

5 个答案:

答案 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预处理程序符号(即,如果TCHARwchar_t),请使用CT2CACW2CA宏。
  • 如果你不这样做(即如果TCHARchar),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;
}