将CStdStringW转换为TCHAR *

时间:2011-04-23 09:55:36

标签: c++ casting

我有一段最初使用CString的代码。由于VSExpress用户无法使用它,因此我将其替换为CString“clone”: http://www.codeproject.com/KB/string/stdstring.aspx

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

TCHAR *GetConnectionString(){return m_szConnectionString)}; 

我收到错误“没有合适的转换”CStdStringW“到”TCHAR *“存在”,因为字符串处理不是我的力量,我不知道如何解决这个问题。好的,我知道我可能要做某种类型的演员但...... 整个代码可以在以下位置找到: Use CString in console app when using VS Express

好吧,祝你有个愉快的一天,希望有人可以帮助我。

关心Lumpi

2 个答案:

答案 0 :(得分:1)

根据您发布的链接,CStdString来自basic_string<TCHAR>。因此,您可以使用其c_str()方法。

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

答案 1 :(得分:1)

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

CStdString GetConnectionString() {
    return m_szConnectionString;
};

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

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

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