将CStdStringW转换为char *

convert CStdStringW to TCHAR *

本文关键字:char 转换 CStdStringW      更新时间:2023-10-16

我有一段最初使用CString的代码。由于它不可用于VSExpress用户,我用CString"克隆"替换了它:http://www.codeproject.com/KB/string/stdstring.aspx

这个克隆工作得很好,但在使用它时仍然存在一个问题:

TCHAR *GetConnectionString(){return m_szConnectionString)}; 

我得到错误"没有合适的转换从"CStdStringW"到"TCHAR *"存在",因为字符串处理不是我的力量,我不知道如何解决这个问题。我知道我可能需要做一些类型转换但是....完整的代码可以在下面找到:使用VS Express

时,在控制台应用程序中使用CString

好吧,祝你今天愉快,希望有人能帮我。

问候Lumpi

一旦提交到一个非标准字符串类,就不得不使用它了。您应该更改返回值类型:

CStdString GetConnectionString() {
    return m_szConnectionString;
};

另一个选择是将返回类型从TCHAR更改为const TCHAR:

const TCHAR* GetConnectionString() {
    return (LPCTSTR)m_szConnectionString;
};

这不是一个很好的解决方案,当调用代码存储指针和连接字符串被改变时,它将失败。顺便说一下,这也是原始代码中的一个缺陷。

根据你发布的链接,CStdString来源于basic_string<TCHAR>。因此,可以使用它的c_str()方法。

const TCHAR *GetConnectionString()
{
    return m_szConnectionString.c_str();
}