首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C++中处理字符串?

如何在C++中处理字符串?
EN

Stack Overflow用户
提问于 2008-09-25 13:35:58
回答 15查看 3.4K关注 0票数 17

在C++中,你最喜欢的字符串处理方式是什么?一个C风格的char数组?或wchar_tCStringstd::basic_stringstd::stringBSTRCComBSTR

当然,其中每一个都有自己的应用领域,但不管怎样,哪一个是你最喜欢的,为什么?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2008-09-25 13:51:55

std::string或std::wstring,取决于您的需要。为什么?

它们是可移植的可移植代码它们可以处理standard

  • They're

  • 它们有性能保证(根据针对缓冲区溢出和类似攻击的代码,

  • 很容易根据需要转换为其他类型<

>H113>被很好地模板化,在减少代码膨胀和提高性能的同时为您提供了广泛的选择。真的。不能处理模板的编译器现在早就不存在了。

C风格的字符数组是在自找麻烦。有时您仍然需要处理它们(这就是std::string.c_str()的用途),但是,老实说,C中最大的危险之一是程序员使用char*做坏事并最终导致缓冲区溢出。不要这样做。

wchar__t数组也是一样的,只是更大一些。

CString、BSTR和CComBSTR不是标准的,也不能移植。除非绝对强制,否则请避免使用它们。最好是在需要时将std::string/std::wstring转换为它们,这应该不是很昂贵。

注意,std::string只是std::basic_string的子类,但是除非您有充分的理由不使用std::string,否则最好还是使用std::string。真的很棒。在这种情况下,让编译器来处理优化。

票数 32
EN

Stack Overflow用户

发布于 2008-09-25 13:42:43

std::string !!

这就是为什么他们称之为“标准”的原因。

basic_string是一个实现细节,应该忽略它。

BSTR & CComBSTR仅适用于带有COM的interop,并且仅适用于互操作的瞬间。

票数 8
EN

Stack Overflow用户

发布于 2008-09-25 13:40:21

std::string,除非我需要调用专门接受您列出的其他参数之一的API。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/133364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档