保存到文件时,忽略空格后的单词

时间:2016-08-06 06:05:33

标签: c++

我一直在努力保存到文件,这就是结果。唯一的问题是在空格之后的任何事情都被忽略了(如果你输入“john smith”)它会打印出来 (“使用此文件的最后一个人是:john”)我正在使用GNU GCC编译器的代码块。这是代码:

    #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;
   }

谢谢

1 个答案:

答案 0 :(得分:0)

对于ifstream(包括cin)的字符串对象,使用从开头到第一个空格的输入,空格为SPACE,TAB和NELINE。 因此,您应该使用getline代替cin >>

试试这个:

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

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

<强>更新

顺便说一句,在你的代码中 之后

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

你使用

   Data >> name;

因此,以二进制模式打开的流由>>读取 - 它不太好。