C ++传递字符串导致分段错误

时间:2016-02-13 16:26:06

标签: c++ string segmentation-fault

我正在尝试进行简单的人口统计输入 - >输出程序。输入人员信息并将其写入csv文件。但是我无法获得名称部分。我总是遇到分段错误。下面的代码是有问题的位,不起作用。我知道它与字符串有关,如果我改为int它就可以了。所有其他数据输入(为简单起见已删除)有效。

主要

#include <iostream>
#include "People.h"
using namespace std;
void demographics();

int main()
{
    demographics();
    return 0;
}

void demographics()
{
    short elements = 2;
    Names test[elements];
    vector<string> name2;
     for(int i =0; i<=elements; i++)
    {
        string name;
        cout << "Please enter first name for child " << i+1 << endl;
        cin >> name;
        name2.push_back(name);
        test[i].setName(name2);
    }
    return;
}

People.h

#ifndef PEOPLE_H_INCLUDED
#define PEOPLE_H_INCLUDED
#include <iostream>
#include <string>
#include <vector>

using namespace std;

class Names
{

    private:
        vector<string> names;
    public:
        void setName(vector<string>&);
};

People.cpp

#include "People.h"
#include <iostream>

using namespace std;

void Names::setName(vector<string>& f_l_name)
{
    names = f_l_name;
}

1 个答案:

答案 0 :(得分:7)

for(int i =0; i<=elements; i++)

应该是

for(int i =0; i < elements; i++)