私は、ファイルを読み込んで、それを別のクラスに文字配列として送るC++プログラムを書いています。文字配列はポインタで渡されるだけなので、すべてのサイズが失われます。標準テキストファイルはNULLで終了しますか?
読み込むファイルはテキストファイルになります。テキストファイルはnullで終了していますか?
私は本当にVectorの機能を必要としないので、Vectorの使い方は望ましくありません。配列のサイズです。
私は、ファイルを読み込んで、それを別のクラスに文字配列として送るC++プログラムを書いています。文字配列はポインタで渡されるだけなので、すべてのサイズが失われます。標準テキストファイルはNULLで終了しますか?
読み込むファイルはテキストファイルになります。テキストファイルはnullで終了していますか?
私は本当にVectorの機能を必要としないので、Vectorの使い方は望ましくありません。配列のサイズです。
No.
ファイルには既知の長さがあるため、ターミネータバイトは必要ありません。
答えをありがとう。私は配列の長さを指定するintを送るつもりだと思う。 –
テキストファイルはNULLで終了しません。あなたは、私が
cin.eof()
は、あなたが探しているものだと思うEOF(ファイルの終わり) をチェックする必要があります。ファイルの終わりに達するとtrueを返します。
しかし**はループ状態ではしません**。 'eof'フラグは、EOFのために読み込み操作が失敗するまでセットされないので、ループ状態で' eof'をチェックすると、一回多くループします。 –
いいえ、そうではありません。しかし、ファイルから文字列を読み込む多くのC/C++関数は、返されたデータにゼロ終了を付加します。例えば
使用EOFではなく、ヌル文字を見つける... :
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream iFile("myfile.txt"); // myfile.txt has integers, one per line
while (!iFile.eof())
{
int x;
iFile >> x;
cerr << x << endl;
}
return 0;
}
ループ状態でeof()を使用しないでください。 –
いいえ、テキストファイルは 'NULL'が終了されていません。バッファ内に(ファイルから読み取る関数/メソッドによって)追加することも、長さを保持する別の変数を保持することもできます。 – VoidPointer
@VoidPointer Lengthパラメータです。 –
関連:https://latedev.wordpress.com/2012/12/04/all-about-eof/ – delnan