将CString转换为字符数组?

时间:2009-04-24 09:38:51

标签: c++ visual-c++ char cstring

如何将MFC中的CString转换为char [](字符数组)

5 个答案:

答案 0 :(得分:9)

使用CString :: GetBuffer()来获取TCHAR [] - 指向缓冲区的指针。如果编译时没有定义UNICODE就足够了 - TCHAR与char相同,否则你必须分配一个单独的缓冲区并使用WideCharToMultiByte()进行转换。

答案 1 :(得分:4)

我为此苦苦挣扎,但我现在使用的是:( UNICODE友好)

CString str命令("我的文本发送到DLL。");

**

char strPass[256];
strcpy_s( strPass, CStringA(strCommand).GetString() );

**

// CStringA是CString的非宽/ unicode字符版本 然后,这将把你的null终止的char数组放在strPass中。

另外,如果您控制另一侧的DLL,请将参数指定为:

const char * strParameter

而不是

char strParameter *

将"可能"使用默认转换通常有效转换CStrings。

答案 2 :(得分:3)

您可以使用GetBuffer函数从CString获取字符缓冲区。

答案 3 :(得分:1)

仅调用GetBuffer方法是不够的,您还需要将此缓冲区复制到数组中。

例如:

CString sPath(_T("C:\temp\"));
TCHAR   tcPath[MAX_PATH]; 
_tcscpy(szDisplayName, sPath.GetBuffer(MAX_PATH));

答案 4 :(得分:0)

如其他地方所述,如果您需要为警告C4840移植CString:非便携式f。

快速,Unicode和&&多字节striong转换正在使用:

的static_cast

样品:

    //was: Str1.Format( szBuffer, m_strName );
    Str1.Format(szBuffer, static_cast<LPCTSTR>(m_strName) );