如何将MFC中的CString转换为char [](字符数组)
答案 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) );