[解決済み] QByteArrayからQStringへの変換
2022-02-05 01:04:56
質問
で困っています。
QByteArray
と
QString
.
あるファイルを読み込んで、その情報を
QByteArray
. ファイルはユニコードなので、以下のような内容です。
t\0 e\0 s\0 t\0 \0 \0
この値を指定した値と比較しようとしていますが、デバッガで見るとユニコード文字列ではないので、失敗しています。
コードで全て説明します。
QByteArray Data; //contains unicode string "t\0 e\0 s\0 t\0 \0 \0"
QString myValue = "test"; //value to compare.
if(Data.contains(myValue))
//do some stuff.
else
//do other stuff.
デバッガで、変数
Data
は、値
"t\0 e\0 s\0 t\0 \0 \0"
と
myValue
は値
"test"
. どうすれば直るのでしょうか?
どのように解決するのですか?
を使用することができます。 QTextCodec を使用してバイト配列から文字列に変換します。
QString DataAsString = QTextCodec::codecForMib(1015)->toUnicode(Data);
(1015はUTF-16、1014はUTF-16LE、1013はUTF-16BE、106はUTF-8)
あなたの例から、文字列
"test"
は次のようにエンコードされます。
"t\0 e\0 s\0 t\0 \0 \0"
を使用すると、すべてのアスキー文字の後に
\0
-バイト、あるいはすべてのASCII文字が2バイトでエンコードされています。このようにアスキー文字がエンコードされるユニコードエンコーディングは UTF-16 か UCS-2 (UTF-16 の制限バージョン) だけなので、あなたの場合は 1015 mib が必要です (あなたのローカルエンディアンが入力エンディアンと同じであると仮定します)。
関連
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] intをQStringに変換する方法は?
-
[解決済み] QStringをstd::stringに変換する方法は?
-
[解決済み] QStringからchar*への変換
-
[解決済み] Qt C++のQStringからQByteArrayへの変換機能
-
[解決済み】mapがキーに値を含むかどうかを判断する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)