C ++ cin分段错误11

时间:2018-05-21 06:36:34

标签: c++ segmentation-fault cin

代码是:

std::string fname;
std::cin >> fname;

当代码位于main函数时,一切顺利。 但是当我将这两行放在一个成员函数中时,我得到一个分段错误atruntime。

任何人都可以给我一些关于发生了什么的暗示吗?

最小例子:

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
class TextQuery {
private:
    std::vector<std::string> *lines_of_text;
public:
    void retrieve_text();
};

void TextQuery::retrieve_text() {
    std::cout<<"Please input file name:\n";
    std::string fname;
    std::cin >> fname;
    std::ifstream fcontent(fname.c_str(), std::ios::in);
    std::string text_line;
    while(getline(fcontent, text_line, '\n')) {
        lines_of_text->push_back(text_line);
    }
}


int main() {
    TextQuery tq;
    tq.retrieve_text();
    return 0;
}

我在MacOS上使用g ++ 4.2.1。

1 个答案:

答案 0 :(得分:5)

您声明成员指针但不分配对象

std::vector<std::string> *lines_of_text;

但你为什么要使用指针?你可以将它声明为成员对象

std::vector<std::string> lines_of_text;