問題タブ [wofstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-c++ - wofstream は不要なバイトを書き込みます
これまでのところ、wofstreamを使用してutf-16でファイル出力を試しています。しかし、新しい行を書くのに問題があります。メモ帳と 16 進エディタでわかったように、Windows の新しい行は、LineFedd と CarrigeReturn (0x000A と 0x000D) の 2 つのシンボルに対応しています。これをプログラムで再現しようとすると、奇妙な結果になりました。
ENDL に続くテキストは完全にめちゃくちゃです。16進エディタで原因を見つけました。ENDL の場合、 0D 0A 00 0D 00 を書き込みます。つまり、何らかの理由で、改行文字の前に不必要で不快な有害な 0D バイトを書き込み、後続のすべてのバイトを右にシフトさせ、utf-16 エンコーディングを台無しにします。
なぜこれが起こるのか、どうすれば修正できるのかわかりません
c++ - Unicodeプログラムでのc ++ wofstreamの問題
vs2008でユニコードコンパイルを使用する
Cコードで問題なく実行できます。
ファイルを開くとすべて正しいのですが、以下の C++ プログラムでは最初の行しか取得できず、locale::global(locale("")); を試しました。同じ結果で。
そして、私は同じ結果でこれを挿入しようとしました:-
c++ - C++ std::wofstream Unicode の問題。
VS 2012 を使用してこのコードを作成しました。
my_log.txt ファイルでは、すべての Unicode 記号が「?????」に置き換えられます。ログファイルテーブルのようなものを作成したい。「---」のような標準のASCII記号を使用すると、機能し、それらはすべて正しく表示されます。グローバル ロケールを変更しようとしましたが、成功しません。
c++ - C++ txt ファイルにユニコードを書き込むための codecvt をインスタンス化できません
地獄0、
c ++でユニコードをサポートするテキストファイル(実際にはcsvファイルですが、nvm)を作成する必要があります。私が変更しなければならないソース コードは、既にうまく機能していますが、ANSI しかサポートしていません。wofstream で動作しています:
どこでも見つけた簡単な解決策は、次のことです。
しかし、いくつかの理由で、codecvt をインスタンス化できません。visualStudio は、パラメーターが宣言に適合しないと言っています。理由がわかりません。私の推測の 1 つは、私のコンパイラがそれをサポートしていないということでしたが、今はどう考えればよいかわかりません。
私は別の解決策も試しました:ファイルがutf-16でエンコードされていることを宣言するには、次のように最初の文字を手動で記述します:
動作しています(エクスポートされたファイルはutf-16でエンコードされています)が、CStringをutf-16で「変換」する必要があるため、ファイルへのすべての書き込みが台無しになっていますが、2日間試してもうまくいきません。
最初の解決策を使用できれば素晴らしいと思いますが、コンパイラがそれを実行したくない理由が本当にわかりません。同じ問題を抱えている人をインターネット上で見つけることができません。なぜこれを行っているのか、またはutf-16 txtファイルを書き込むための別の代替ソリューションがある場合は、本当に感謝します<3
c++ - std::wofstream が long long の書き込みに失敗する
2 つのストリームがあり、1 つは読み取り用、もう 1 つは書き込み用 (差分ファイル) です。
変数を使用した書き込み操作に到達するまで、ファイルへのデータの追加は正常に機能しstd::streamoffます。であることを考慮してstd::wofstream、この関数ですでに数回行ったように、変数を「通常どおり」出力します。
この問題の原因は何ですか? 代わりに
a を使用すると、これは正常に機能することに注意してください。std::ofstream
c++ - Unicode 文字列を txt ファイルに書き込む
選択内容に一致するファイルにテキストを書き込む単純な txt スキャナーを作成しました。問題は、ペンの代わりに洀漀のようにファイルに書き込むことです。写真では、たとえば次のように表示されます。

c++ - std::wstring に存在する wchar_t が見つからない
と で遊んでいるstd::wstringとstd::wfstream、奇妙な動作に遭遇しました。std::basic_string<wchar_t>::findつまり、特定の文字が見つからないように見えます。次のコードを検討してください。
ここでは、ファイルの最初の行を読み取ってinputファイルに書き込むだけoutputです。プログラムが実行される前、最初のファイルの内容はaąbcćdで、出力ファイルは空です。コードの実行後、入力ファイルは出力ファイルに正常にコピーされます。
私にとって驚くべきことは、 でć手紙を見つけようとしたところbuf、前述の奇妙な動作に遭遇したことです。プログラムを実行した後、出力ファイルに正確に が含まれていることを確認しました。aąbcćdこれには、明らかに前述の文字が含まれていますć。
ただし、回線std::cout << buf.find(L'ć')は期待どおりに動作しませんでした。4のメモリ レイアウトを考えると、 の出力が得られるとはstd::wstring思っていませんでしstd::string::nposた。この方法で通常の ASCII 文字を見つけることは成功することに注意してください。
要約すると、上記のコードは入力ファイルの最初の行を出力ファイルに正しくコピーしますが、コピーするデータを保持する役割を担う文字列 (npos を返す) 内の文字を見つけることができません。どうしてこんなことに?findここで が失敗する原因は何ですか?
注: どちらのファイルも、Windows では UTF-8 でエンコードされています。