Vih*_*rma 24 c++ string unicode qt qt-creator
QString比std :: string有什么优势?普通的std :: string可以存储unicode字符吗?我正在尝试编写一个可以打开各种歌曲文件的程序.这些文件的名称可以使用不同的语言.我听说在这种情况下使用普通字符串将无法正常工作.我想保持应用程序独立于QT并重用代码,例如在android中.你有什么建议
Ole*_*pin 29
QString允许你使用Unicode,有更多有用的方法,并与Qt很好地集成.它也有更好的性能,如cbamber85 所述.
std::string只是在你给它们时存储字节,它对编码一无所知.它每个字符使用一个字节,但对于世界上所有语言来说都不够.存储文本的最佳方式可能是UTF-8编码,其中字符可能占用不同的字节数,而且std::string无法正确处理!例如,这意味着该length方法将返回字节数,而不是字符.这只是冰山一角......
我不熟悉QString,但最大的优点std::string
是它是标准的.关于Unicode,存储UTF-8没有问题std::string; 但是,根据你正在做的事情,使用a std::wstring(通常会存储UTF-16或UTF-32)可能更好.
对于Unicode的复杂操作,我建议使用ICU.但是对于很多应用程序来说,只存储UTF-8就足够了.
如果您使用Qt框架编写软件,那么最好使用QString.原因很简单,几乎所有对字符串起作用的Qt函数都会接受QString.如果你使用std :: string,你可能会遇到必须从一个到另一个进行类型转换的情况.如果您的软件根本没有使用Qt,您应该考虑使用std :: string.这将使您的代码更具可移植性,并且不依赖于用户必须安装以使用您的软件的额外框架.