問題タブ [fstream]
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.
c++ - C ++で可能なUnicodeトレントコンテンツを読み込んで出力しますか?
トレントファイル(argv [1]を介して渡される)を開き、すべてを読み取り、ファイルの内容全体を変更せずにそのまま印刷する単純なC ++プログラムを作成しようとしています。オリジナルトレント。問題は、一部の torrent に日本語、ロシア語など (ファイル名、説明など) が含まれている可能性があることです...そしてもちろん、ハッシュなどを含む標準的な torrent データです。
これを行う最善の方法は何ですか?これまでのところ、コンテンツの一部しか出力されておらず、データを正しく読み取ったり印刷したりしていないようです...文字化けしているか何かです:
c++ - fstream での不正なデータ入力
fstream を使用してテキスト ファイルからデータを読み込もうとしましたが、間違ったデータが取得されました。
test.in
は単に12
。
cout
読み取ります4273190
。
誰かがこれがなぜそうなのか、そしてそれを修正する方法を説明できますか?
c++ - 読むためにファイルをどこに置くか?
ねえ、fstreamを使用して読み込もうとしているテキストファイルはどこに配置すればよいですか?このチュートリアルでは、http://www.gamedev.net/reference/articles/article1127.asp、彼らは言います
ifstream fin( "input.txt");
「input.txt」はどこにありますか?この「C:\ Users \ XXXXXXX \ Documents \ test.in」を実行してファイルへのパスを指定する前に、ただし、これは機能していないようです。fstreamでのデータ入力が正しくありません。
私はCodeBlocksを使用しています。
前もって感謝します。
c++ - fstreamで書き込まれたファイルにはどのような権限がありますか?
次のように書き込むためのファイルを作成するとします。
このファイルの権限はどのように決定されますか?私は1分に1回程度ファイルを生成するプログラムを一晩実行しました-いくつかは0644ですが、他は0660であり、それを変更する必要があるコードには何もありません。(一部の実装では、3番目の引数でファイルのアクセス許可を設定できることがわかりました。これをサポートしていないように見えるgcc 4.1.2を使用しています)。
c++ - C++ ヘッダー ファイル変数のスコープの問題
この問題に関連する 3 つのファイルがあります。file.h、file.C、および user.C。
file.h には、プライベート メンバ fstream ログがあります。
file.C のコンストラクターで、ログを開きます。コンストラクターではこれを行いませんが、コンストラクターは関数 OpenLog() を呼び出します。
file.h にはインライン クローズ関数もあります。
CloseLog() {if (ログ) logs.close();}
ファイル user.C には、ファイルのインスタンスを作成してから CloseLog を呼び出す終了関数があります。この時点で障害をセグメント化します。他にもいくつかのダミー テストを作成しましたが、ログがどこかで失われているように見えます...
file.C から user.C に移動してから file.C に戻ると、これが発生します。file.C にグローバルとして fstream ログがある場合は動作しますが、グローバルは避けたいと思います。
ここで何をすべきかについて何か考えはありますか?これについてさらにコードを投稿する必要がある場合はお知らせください。これをより適切にデモするためにダミーのものをセットアップできます。
** リクエストに応じて追加のコードを示します - コピーして貼り付けることはできません。不足していることをお許しください **
クラス helpME.h、helpME.C、および user.C を呼び出します。
//helpME.h
#ifndef _helpME_H
#define _helpME_H#include < iostream>
#include < fstream>
//さまざまなインクルードクラス helpME {
プライベート:
fstream ログ;public:
void CloseLog() {if (ログ) logs.close();}
};
#endif//helpME.h の終了
//helpME.C
void helpME::helpME(int argc, char** argv)
{
//各種コード
OpenLog();
}void helpME::OpenLog()
{
//logname は上に設定されています。前に、これが正しいことを示す print ステートメントがありました
。 logs.open(logname, ios::in | ios::out | ios::trunc);
}//helpME.C の終了
//user.C
void user::quitHelpME(item)
{
helpME* hME = (helpME*) item;
hME->CloseLog();
}//エンドユーザー.C
繰り返しますが、明確でないことをお許しください。これを追加することで、さらに混乱を招く可能性があると思います...このコードは別のボックスにあり、コピーすることはできません.
c++ - C ++ifstreamUTF8の最初の文字
UTF8(Notepad ++で)として保存されたファイルのc ++プログラムで開いたfstreamの先頭に、この文字が含まれているのはなぜですか?
´╗┐
私はそれが何であるかわかりません、私がASCIIに保存するときそれがそこにないことを知っているだけです。更新:UTF8(BOMなし)に保存すると、そこにはありません。
c ++でファイルのエンコーディングを確認するにはどうすればよいですか(ASCIIまたはUTF8、それ以外はすべて拒否されます;))。まさにこれらのキャラクターですか?
ありがとう!
c++ - std :: fstreamは現在のプロセスのファイルを開きませんが、open()は開きますか?
現在のプロセスの実行可能ファイルを読み取り/書き込み操作のために開こうとしています(実行可能ファイルに追加のデータが添付されています)が、std::fstreamはios::in|でファイルを開きません。ios :: out | open()が(O_RDWRフラグが設定されている場合)であっても、ios::binaryモード。
std :: fstreamがファイルを開かないのに、open()が開く理由を誰かが知っていますか?もしそうなら、どうすればstd :: fstreamにファイルを開かせることができますか?
unicode - win32 c++fstreamワイド引数
私が話していることについては、リンクを参照してください。
リンクでポイント1を使用したい
リンクが言うことを正確に行うことは可能です:
しかし、gcc(mingw)4.4は、一致する呼び出しがないと言っています...
私はそれを間違っていますか、それとも上記のリンクの情報は間違っていますか?
c++ - 空の文字列を返すgetline
fstreamからのgetline命令に問題があります。これは私のコードからの抜粋です:
このコードは、最初に実行されたときにmission_fileを開き、次の反復で保存ファイルを開く必要があります。保存ファイルは、すべてのサイクルの最後に作成されます。少なくとも、このように機能するはずです。なぜなら、最初はすべてが完璧に機能しますが、次の反復では「mission_file.getline(buffer_line、256);」です。空の行を返し、プログラムをクラッシュさせます。また、boolean_1がfalseとして開始された場合、サイクルは次のサイクルまで正常に機能します。
必要な「.txt」の存在をすでに確認しました。mission_fileとsave_fileの両方がis_open()trueを返します。
c++ - fstream から正確に 128 バイトを文字列オブジェクトに読み込むにはどうすればよいですか?
fstream から正確に 128 バイトを文字列オブジェクトに読み込むにはどうすればよいですか?
ファイルの最初の 128 バイトを読み取って出力し、次にファイルの最後の 128 バイトを読み取って出力するコードを書きました。EOF まで簡単に反復できるため、最後の部分は機能しますが、先頭から正確に 128 バイトを取得するにはどうすればよいでしょうか? ifstream イテレータに 128 を追加できないため、以下のコードは機能しません。インデックス化できず、インクリメントのみ可能です (らしい)。
確かに、イテレータと *++ を 128 回作成することはできますが、それを行うには 1 行の簡単な方法が必要ですよね?