Microsoft レポート ツールを使用して作成されたテキスト ファイルがあります。テキスト ファイルにはBOM
0xFFFE
、先頭に が含まれ、次にASCII
文字間にヌルがある文字出力 (" F.i.e.l.d.1.
") が含まれます。これを使用して、これを入力形式および出力形式として使用iconv
するように変換できます...うまく機能します。UTF-8
UCS-2LE
UTF-8
私の問題は、UCS-2LE
ファイルから文字列に行単位で読み取り、フィールド値を解析してからASCII
テキスト ファイル (つまりField1 Field2
) に書き出すことです。string
のおよびwstring
ベースのバージョンを試しましたgetline
– ファイルから文字列を読み取る間、関数のような関数substr(start, length)
は文字列を値として解釈する8-bit
ため、開始値と長さの値はオフです。
UCS-2LE
データをC++
文字列に読み込み、データ値を抽出するにはどうすればよいですか? 私は数多くのグーグル検索と同様に見てきましたがboost
、icu
うまくいくものは見つかりませんでした。ここで何が欠けていますか?助けてください!
私のコード例は次のようになります。
wifstream srcFile;
srcFile.open(argv[1], ios_base::in | ios_base::binary);
..
..
wstring srcBuf;
..
..
while( getline(srcFile, srcBuf) )
{
wstring field1;
field1 = srcBuf.substr(12, 12);
...
...
}
したがって、たとえば" "srcBuf
が含まれている場合、上記は " " の代わりに " " を返します。 W.e. t.h.i.n.k. i.n. g.e.n.e.r.a.l.i.t.i.e.s.
substr()
.k. i.n. g.e
g.e.n.e.r.a.l.i.t.i.e.s.
私が望むのは、マルチバイト表現を気にせずに文字列を読み込んで処理することです。boost
これらの文字列をファイルから読み取り、内部使用のために固定幅表現に変換するために (または他の何かを) 使用する例はありますか?
ところで、私は Eclipse と gcc を使用して Mac を使用してSTL
います。ワイド文字列を理解できない可能性はありますか?
ありがとう!