代码中有错误查找修改~

void Init()
{
data = IoTool::Read("data.txt");
int data_pos = 0;

vector<Single> single_list;
vector<Many> many_list;

while (data[data_pos] != NULL) {  //是有误的
    char *line = data[data_pos++];

    string str_line(line);

    istringstream strin(str_line);

    string type;
    strin >> type;

    if (type == "single") {
        string name;
        int price;
        strin >> name >> price;

        single_list.push_back(Single(name, price));
    } 

    if (type == "many") {
        string name;
        int price;
        strin >> name >> price;

        string tmp_name;
        int tmp_price;
        vector<Single> many_single_list;
        while (strin >> tmp_name >> tmp_price) {
            many_single_list.push_back(Single(tmp_name, tmp_price));
        }

        many_list.push_back(Many(name, price, many_single_list));
    } 

    if (type == "password") {
        string password;
        strin >> password;
        g_administrator = Administrator(password);
    }
}

g_purchase_menu.set_single_list(single_list);
g_purchase_menu.set_many_list(many_list);

}

g_purchase_menu.set_single_list(single_list);
g_purchase_menu.set_many_list(many_list);

while (data[data_pos] != NULL) { //是有误的
char *line = data[data_pos++];
string str_line(line);
这两句改为
for(auto it = data.begin() ; it != data.end() ; ++it) {
string str_line(it>c_str());

上面有误
while (data[data_pos] != NULL) { //是有误的
char *line = data[data_pos++];
string str_line(line);
这两句应改为
for(auto it = data.begin() ; it != data.end() ; ++it) {
string str_line(it->c_str());

老老实实GDB调试吧老哥,这样才能进步。

GDB简单使用:
https://foreverpersist.github.io/2017/04/13/gdb-usage/#more

data[data_pos] != NULL判断是否为空是这样判断的吗