我是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);
}
然后将输入的文本保存到文件中,但是当我尝试读取文件时,只保存一个单词,这是第一个单词。我不确定之前是否曾经问过,但我尝试使用高级搜索无济于事。
答案 0 :(得分:3)
问题在于您使用>>
来提取字符串。字符串>>
通常在空格上停止。
要阅读整行,请使用cin
执行您正在执行的操作 - 使用getline
:
cout << "Loading file..." << endl;
ifstream loadText(newTextFile);
getline(loadText, loadedText);
loadText >> loadedText;
loadText.close();
cout << loadedText;