其他分享
首页 > 其他分享> > 为什么C中有这么多字符串类型?

为什么C中有这么多字符串类型?

作者:互联网

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

我说要有std :: string,LPCSTR,System :: String,TCHAR [],char s [] =“ss”,char * s?

这引起了巨大的麻烦,主要是在GUI应用程序中,WinAPI有LPCSTR与char或std :: string不兼容的问题,现在在CLR应用程序中,如果它有System :: String,很难转换为std :: String或char * s甚至char s [].

为什么C/C++的字符串类型不像Java中的String那样唯一?

解决方法:

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

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

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

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

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

最重要的是,在图书馆层面或语言层面,它是不同权衡之间的设计决策.简单,性能,角色支持等.一般来说,storing text is hard.

标签:c-3,c,string,c-cli
来源: https://codeday.me/bug/20190828/1750898.html