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

C++ passing strings causing segmentation fault

本文关键字:分段 错误 字符串 C++      更新时间:2023-10-16

我正在尝试做一个简单的人口统计输入>输出程序。输入人员信息并将其写入 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;
}

人.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>&);
};

人.cpp

#include "People.h"
#include <iostream>
using namespace std;
void Names::setName(vector<string>& f_l_name)
{
    names = f_l_name;
}

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

应该是

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