Getline只读取第一个单词

时间:2015-01-29 10:03:26

标签: c++ file-io fstream

我是C ++的新手,我无法解决这个问题。 getline(cin, string)只会读取该行的第一个单词。

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

using namespace std;

string commitToFile, newTextFile, loadedText;

int main()
{
    cout << "Enter some text to save to a file." << endl;
    getline(cin, commitToFile);
    cout << "Enter a file name. Please do not use spaces." << endl;
    cin >> newTextFile;
    newTextFile.append(".tf");
    cout << "Saving..." << endl;
    ofstream saveText(newTextFile); //.tf stands for textfile
    if (!saveText) {
        cout << "Error!";
        return(0);
    }
    saveText << commitToFile << endl;
    saveText.close();
    cout << "Saved!" << endl;

    //opening the file
    cout << "Loading file..." << endl;
    ifstream loadText(newTextFile);
    loadText >> loadedText;
    loadText.close();
    cout << loadedText;
    return(0);
}

然后将输入的文本保存到文件中,但是当我尝试读取文件时,只保存一个单词,这是第一个单词。我不确定之前是否曾经问过,但我尝试使用高级搜索无济于事。

1 个答案:

答案 0 :(得分:3)

问题在于您使用>>来提取字符串。字符串>>通常在空格上停止。

要阅读整行,请使用cin执行您正在执行的操作 - 使用getline

cout << "Loading file..." << endl;
ifstream loadText(newTextFile);
getline(loadText, loadedText);
loadText >> loadedText;
loadText.close();
cout << loadedText;