从 ifstream 中读取一行并存入字符串变量中

68
在下面的代码中:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() {
    string x = "This is C++.";
    ofstream of("d:/tester.txt");
    of << x;
    of.close();


    ifstream read("d:/tester.txt");
    read >> x;
    cout << x << endl ;
}

输出:

This

由于 >> 运算符读取到第一个空格,所以我得到了这个输出。我如何将该行重新提取回字符串中?

我知道这种形式的 istream& getline (char* s, streamsize n ),但我想将其存储在一个字符串变量中。 我该怎么做?


1
请参阅以下建议:https://dev59.com/snVD5IYBdhLWcg3wBWvd - Itamar Katz
1个回答

107

使用来自<string>头文件的std::getline()函数。

 istream & getline(istream & is,std::string& str)

所以,对于你的情况,应该是这样:

std::getline(read,x);

16
getline()函数的返回值(一个流对象)应该在布尔表达式中进行评估。对流对象进行布尔评估在这里起到非常重要的作用:它评估底层流的failbitbadbit。我们应该利用这一点。更深入的解释可以在这里找到:http://gehrcke.de/2011/06/reading-files-in-c-using-ifstream-dealing-correctly-with-badbit-failbit-eofbit-and-perror - Dr. Jan-Philip Gehrcke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接