Microsoft レポート ツールを使用して作成されたテキスト ファイルがあります。テキスト ファイルにはBOM 0xFFFE、先頭に が含まれ、次にASCII文字間にヌルがある文字出力 (" F.i.e.l.d.1.") が含まれます。これを使用して、これを入力形式および出力形式として使用iconvするように変換できます...うまく機能します。UTF-8UCS-2LEUTF-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.eg.e.n.e.r.a.l.i.t.i.e.s.
私が望むのは、マルチバイト表現を気にせずに文字列を読み込んで処理することです。boostこれらの文字列をファイルから読み取り、内部使用のために固定幅表現に変換するために (または他の何かを) 使用する例はありますか?
ところで、私は Eclipse と gcc を使用して Mac を使用してSTLいます。ワイド文字列を理解できない可能性はありますか?
ありがとう!