2013-07-10 6 views
5

私は、ファイルを読み込んで、それを別のクラスに文字配列として送るC++プログラムを書いています。文字配列はポインタで渡されるだけなので、すべてのサイズが失われます。標準テキストファイルはNULLで終了しますか?

読み込むファイルはテキストファイルになります。テキストファイルはnullで終了していますか?

私は本当にVectorの機能を必要としないので、Vectorの使い方は望ましくありません。配列のサイズです。

+1

いいえ、テキストファイルは 'NULL'が終了されていません。バッファ内に(ファイルから読み取る関数/メソッドによって)追加することも、長さを保持する別の変数を保持することもできます。 – VoidPointer

+0

@VoidPointer Lengthパラメータです。 –

+0

関連:https://latedev.wordpress.com/2012/12/04/all-about-eof/ – delnan

答えて

8

No.
ファイルには既知の長さがあるため、ターミネータバイトは必要ありません。

+0

答えをありがとう。私は配列の長さを指定するintを送るつもりだと思う。 –

4

テキストファイルはNULLで終了しません。あなたは、私が

cin.eof() 

は、あなたが探しているものだと思うEOF(ファイルの終わり) をチェックする必要があります。ファイルの終わりに達するとtrueを返します。

+0

しかし**はループ状態ではしません**。 'eof'フラグは、EOFのために読み込み操作が失敗するまでセットされないので、ループ状態で' eof'をチェックすると、一回多くループします。 –

1

いいえ、そうではありません。しかし、ファイルから文字列を読み込む多くのC/C++関数は、返されたデータにゼロ終了を付加します。例えば

-1

使用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; 
} 
+1

ループ状態でeof()を使用しないでください。 –

関連する問題