Getline 只读第一个字
Getline only reads the first word
我是 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);
}
然后输入的文本被保存到文件中,但是当我尝试读取文件时,只保存了一个词,这是第一个词。我不确定以前是否有人问过这个问题,但我尝试使用高级搜索无济于事。
问题是您正在使用 >>
来提取字符串。 >>
字符串通常在空格处停止。
要阅读整行,请执行您已经使用 cin
执行的操作——使用 getline
:
cout << "Loading file..." << endl;
ifstream loadText(newTextFile);
getline(loadText, loadedText);
loadText >> loadedText;
loadText.close();
cout << loadedText;
我是 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);
}
然后输入的文本被保存到文件中,但是当我尝试读取文件时,只保存了一个词,这是第一个词。我不确定以前是否有人问过这个问题,但我尝试使用高级搜索无济于事。
问题是您正在使用 >>
来提取字符串。 >>
字符串通常在空格处停止。
要阅读整行,请执行您已经使用 cin
执行的操作——使用 getline
:
cout << "Loading file..." << endl;
ifstream loadText(newTextFile);
getline(loadText, loadedText);
loadText >> loadedText;
loadText.close();
cout << loadedText;