为什么C++中的字符串类型如此之多?

Sam*_*ves 3 c c++ string c++-cli

我喜欢C,我有一本名为Full and Full C和2 C++的C书,我发现这些语言很棒,因为它们具有令人难以置信的功能和性能,但由于这些不同的类型,我必须结束我的许多项目.

我说有std::string,LPCSTR,System::String,TCHAR [],char s [] = "ss",char * s

这将导致主要集中在GUI应用程序巨大的头痛,WinAPI的有问题LPCSTR不是用炭兼容或std::string在CLR应用程序,现在如果它已经System::String给出了很多头疼的转换到std::String或者char * s甚至char s [].

为什么C/C++的字符串类型不像StringJava 那样独特?

luk*_*k32 9

在c ++中没有"很多类型的字符串".通常有一个模板std::basic_string,它基本上是一个专门用于不同字符类型的字符串的容器.

std::string是一种便利的类型std::basic_string<char>.对于不同的底层字符类型,还有更多这样的typedef.

AFAIK,标准c也只有一个官方认可的字符串标准.它是ANSI字符串,即空终止数组char.

你提到的所有其他都是等效的(例如,LPCSTR是一个指向常量字符串的长指针即可const char*),或者是由库提供者编写的一些非标准扩展.

你的问题就像问为什么有这么多的GUI库.因为没有标准的方法可以做到这一点,或者标准方式在某种程度上缺乏,并且提供和支持自己的等效类型是一个设计决策.

最重要的是,在图书馆层面或语言层面,它是不同权衡之间的设计决策.简单,性能,角色支持等.通常,存储文本很难.