Visual C++中有多少种类型的字符串
Posted
技术标签:
【中文标题】Visual C++中有多少种类型的字符串【英文标题】:how many types of strings in visual c++ 【发布时间】:2010-12-23 12:40:46 【问题描述】:Visual C++ 中有多少种字符串类。当我通过 msdn 中心时,我感到很困惑。
我在命名空间系统下找到了这个类型 http://msdn.microsoft.com/en-us/library/system.string(v=VS.71).aspx
然后在标题部分,我找到了字符串标题定义。这似乎与上述不同。我注意到一件事,这个属于 STL。 (请看链接的评论,我不能在同一个帖子中发布两个链接)
通常使用哪一种?我发现很难使用不同的字符串类
提前致谢:)
【问题讨论】:
msdn.microsoft.com/en-us/library/syxtdd4f(v=VS.71).aspx 【参考方案1】:不同的库有不同的字符串类型:
在普通的旧 C 语言中,您将使用 char*
,C++ 标准库提供了在 C++ 开发中广泛使用的 std::string
。 (字符串定义为typedef basic_string<char> string;
)
微软创建了 MFC CString
类,它(曾经?)用于 MFC 风格的编程,Qt 有它的 QString
,它用于 Qt 程序。你提到的System.String
是一个.net 字符串类,只能在托管代码(使用.net)中使用。
如果您是 C++ 新手,我建议您坚持使用 std::string
(#include <string>
)。它是标准且独立于平台的。
【讨论】:
感谢您现在清除 tat :) 另一个问题。我找不到将 std::string 转换为小写的函数。它不在 #includestd::wstring
,其定义为typedef basic_string<wchar_t> wstring;
。这与std::string
的工作方式相同,但将使用宽(通常为 16 位)字符。如果您在 Windows 上构建并使用定义的 UNICODE 进行编译,这将非常有用,因为您将保持与 WinAPI 函数的兼容性。
嘿,非常感谢大家。你所有的 cmets 都非常有用:)
除了我之前的评论(我现在似乎无法编辑)之外,如果您使用的是std::wstring
,那么您的字符串文字应定义为:std::wstring str(L"A Wide String")
。 "L" 使文字字符串变宽。 Windows 使用宏 _T
来定义一个字符串,根据你是否正在构建一个 Unicode 应用程序,我通常在我自己的代码中有一个类似的宏。【参考方案2】:
微软代码中常用的字符串类型有char*、wchar_t*、LPSTR、LPTSTR、LPWSTR、LPCSTR、LPCTSTR、LPCWSTR、BSTR、OLESTR、UNICODE_STRING、String、string、wstring、_bstr_t、CString
最后 5 个是类。根据您需要使用的 API,您可以选择最不麻烦的转换:
std::string 和 wstring,标准 C++ 库 System::String,托管代码的字符串类型 _bstr_t,用于 BSTR 的包装器,用于 COM 自动化 CString,ATL 和 MFC 库的字符串类型。在使用其他 API 时,您可能会遇到其他字符串类型。
【讨论】:
以上是关于Visual C++中有多少种类型的字符串的主要内容,如果未能解决你的问题,请参考以下文章