C++ 将CStdStringW转换为TCHAR*

C++ 将CStdStringW转换为TCHAR*,c++,casting,C++,Casting,我有一段最初使用CString的代码。由于VSExpress用户无法使用它,我将其替换为CString“克隆”,位于: 此克隆工作正常,但使用时仍存在一个问题: TCHAR *GetConnectionString(){return m_szConnectionString)}; 我得到的错误是“不存在从“CStdStringW”到“TCHAR*”的适当转换”,由于字符串处理不是我的强项,我不知道如何解决这个问题。好的,我知道我可能要做一些类型的演员,但是。。。。 整个代码可在以下位置找到

我有一段最初使用CString的代码。由于VSExpress用户无法使用它,我将其替换为CString“克隆”,位于:

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

TCHAR *GetConnectionString(){return m_szConnectionString)}; 
我得到的错误是“不存在从“CStdStringW”到“TCHAR*”的适当转换”,由于字符串处理不是我的强项,我不知道如何解决这个问题。好的,我知道我可能要做一些类型的演员,但是。。。。 整个代码可在以下位置找到:

祝你今天愉快,希望有人能帮助我


关于Lumpi

根据您发布的链接,
CStdString
源于。因此,您可以使用它的方法


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

CStdString GetConnectionString() {
    return m_szConnectionString;
};
另一个选项是将返回类型从TCHAR更改为const TCHAR:

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

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

您应该使用std::string os std::wstring谢谢您!现在它编译没有错误!我真的很讨厌存在大约50亿种不同类型的字符串和字符。好的,我知道有些不同的基本版本是需要的,但对我来说,感觉就像我每天都会发现一个新的“字符串问题”。。无论如何,谢谢你的帮助@Lumpi,你认为C++有字符串问题吗?您应该找个时间试试纯C,这样您就可以了解真正的字符串问题(提示:无字符串类型;)谢谢您的建议!我会记住那个问题。也许我会用艰苦的方式学习它(“它会失败得很惨……”),但我会立即执行你的建议。隆皮
const TCHAR* GetConnectionString() {
    return (LPCTSTR)m_szConnectionString;
};