2016-08-06 3 views
-3

私はファイルへの保存に取り組んでおり、これが結果でした。唯一の問題は、スペースが無視された後に何かが( "john smith"と入力した場合) ( "このファイルを使用する最後の人は:john")と表示されることです。私はGNU GCCコンパイラでcodeblocksを使用しています。ここでは、コードは以下のとおりです(cin含む)ifstreamの文字列オブジェクトの場合ファイルに保存すると、空白の後の単語は無視されます

#include <iostream> 
    #include <cstdlib> 
    #include <fstream> 

    using namespace std; 

    int main() 
    { 
     string name; 
     ofstream saveData; 
     ifstream Data; 
     Data.open("Info.data", ios::binary); 
     Data >> name; 
     Data.close(); 
     cout << "The last person to use the file was " << name << endl; 
     cout << "What is your name?" << endl; 
     cin >> name; 
     saveData.open("Info.data", ios::binary); 
     saveData << name; 
     cout << name << endl; 
     system("PAUSE"); 
     saveData.close(); 
     return 0; 
    } 

おかげ

答えて

0

は最初から最初のスペースまでの入力を使用し、スペースはSPACE、TAB、およびNELINEです。

Data.open("Info.data"); 
getline(Data, name); 
Data.close(); 

cout << "What is your name?" << endl; 
//cin >> name; 
getline(cin, name); 

UPDATE:ところで

、あなたのコード で

後 だから、あなたの代わりに cin >>

はこれを試してみてくださいgetlineを使用する必要があります01あなたがそう

Data >> name; 

を使用

Data.open("Info.data", ios::binary); 

、バイナリモードで開かれたストリームが>>によって読み取られる - それはあまりよくないです。

+0

は、ifstream用のistreamとスペース用の空白のスワップをお勧めします。 – user4581301

+0

#includeファイルはgetl​​ineにありますか? –

+0

#include VolAnd

関連する問題