28

QStringはstd::stringに比べてどのような利点がありますか?通常のstd::stringはUnicode文字を格納できますか?いろいろな曲のファイルを開くプログラムを書こうとしています。これらのファイルの名前は、さまざまな言語にすることができます。このような場合に通常の文字列を使用すると、正しく機能しないと聞いています。アプリケーションをQTから独立させ、たとえばandroidでコードを再利用したいと思います。何を指示してるんですか 。

4

4 に答える 4

36

QStringUnicodeを使用でき、より便利なメソッドがあり、Qtとうまく統合できます。また、cbamber85 が指摘しているように、パフォーマンスも向上しています。

std::string与えられたバイトを保存するだけで、エンコーディングについては何も知りません。1文字あたり1バイトを使用しますが、世界中のすべての言語にとって十分ではありません。テキストを保存する最良の方法は、おそらくUTF-8エンコーディングです。このエンコーディングでは、文字が異なるバイト数を占める可能性があり、std::stringそれを適切に処理できません。これは、たとえば、lengthメソッドが文字ではなくバイト数を返すことを意味します。そして、これは氷山の一角にすぎません...

于 2012-06-14T07:58:58.420 に答える
10

ソフトウェアの作成にQtフレームワークを使用している場合は、QStringを使用することをお勧めします。単純な理由は、文字列で機能するほとんどすべてのQt関数がQStringを受け入れるためです。std :: stringを使用すると、次から次へとタイプケースを作成する必要がある状況に陥る可能性があります。ソフトウェアがQtをまったく使用していない場合は、std::stringの使用を検討する必要があります。これにより、コードの移植性が高まり、ユーザーがソフトウェアを使用するためにインストールする必要のある追加のフレームワークに依存しなくなります。

于 2012-06-14T10:48:41.603 に答える
8

なじみはありません、標準的なの がQString大きなメリットです。Unicodeに関しては、UTF-8を;に格納することに問題はありません。ただし、実行している内容によっては、 (通常はUTF-16またはUTF-32のいずれかを格納する)を使用する方がよい場合があります。std::stringstd::stringstd::wstring

Unicodeの複雑な操作については、ICUをお勧めします。ただし、多くのアプリケーションでは、UTF-8を格納するだけで十分です。

于 2012-06-14T08:06:08.513 に答える
3

技術的には、任意のタイプの文字を格納するための標準の文字列クラスがありますstd::basic_stringstd::stringとは、 forとstd::wstringの専門分野に他なりません。専門分野もあり、UTF-16およびUTF-32ストレージを対象としています。std::basic_stringcharwcharstd::u16stringstd::u32string

とにかく、Qtを使用する必要がある場合は、QStringQtフレームワーク全体が使用するように設計されているため、標準のライブラリ文字列よりも常に優れた代替手段になります。

于 2012-06-14T08:20:05.577 に答える