2016-10-09 3 views
0

cout文を実行すると、メモリアドレスが返されます。coutを使用するときにstd :: getline()がメモリアドレスを返す

string data = "Test String "; 
string info; 
ofstream file("data.dat", ios::binary); 
ifstream fileI("data.dat", ios::binary); 
file << data; 
file.close(); 
cout << getline(fileI, data); // returns a memory address 

どうしてですか?

+0

ここで使用される 'getline'は、改行文字を探します。バイナリファイルは改行ではトラフィックされません。テキスト指向のI/Oにはテキストファイルを使用します。 –

答えて

4

getline関数自体は、指定された最初の引数(コードでfileI)から入力ストリームを返します。結果は2番目の引数(コードのdata)に保存されます。だから、最初にgetline(fileI, data)を実行してから、文字列dataを出力する必要があります。

string data = "Test String "; 
string info; 
ofstream file("data.dat", ios::binary); 
ifstream fileI("data.dat", ios::binary); 
file << data; 
file.close(); 
getline(fileI, data); 
cout << data; 
return 0; 

またdocumentation of getline

1

のstd :: getlineの戻り入力ストリームへの参照を参照してください。ストリームを別のストリームに直接送ることはできませんが、voidポインタに変換することができます(C++ 11まで)。

関連する問題