C++ C++;传递导致分段错误的字符串
我正在尝试做一个简单的人口统计输入->输出程序。输入人员信息并将其写入csv文件。然而,我不能得到的名称部分的工作。我总是会犯分割错误。下面的代码是有问题的位,无法工作。我知道这和字符串有关,如果我改为int,效果就很好。所有其他数据输入(为了简单起见已删除)都可以工作 主要C++ C++;传递导致分段错误的字符串,c++,string,segmentation-fault,C++,String,Segmentation Fault,我正在尝试做一个简单的人口统计输入->输出程序。输入人员信息并将其写入csv文件。然而,我不能得到的名称部分的工作。我总是会犯分割错误。下面的代码是有问题的位,无法工作。我知道这和字符串有关,如果我改为int,效果就很好。所有其他数据输入(为了简单起见已删除)都可以工作 主要 #包括 #包括“People.h” 使用名称空间std; 人口统计学(); int main() { 人口统计学(); 返回0; } 人口统计学() { 短元素=2; 名称测试[元素]; 载体名称2; for(int i=
#包括
#包括“People.h”
使用名称空间std;
人口统计学();
int main()
{
人口统计学();
返回0;
}
人口统计学()
{
短元素=2;
名称测试[元素];
载体名称2;
for(int i=0;ifor(int i=0;i)你是说for循环不应该结束吗?它应该只读取for(int i=0;i)?@user3547452:pdm是说你读取的元素太多了。好吧,这很有意义,当它第一次发布时,它只是说for(int 1=0;它总共有3个元素,这正是我要寻找的。我想为3个人输入信息。这为什么会导致错误?为了澄清,我确实更改为只Names test[2];
创建了一个包含两个元素而不是三个元素的数组。您可以使用test[1]
然后获取第二个元素,因为索引从0开始…初始化不是索引。
#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;
}
#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>&);
};
#include "People.h"
#include <iostream>
using namespace std;
void Names::setName(vector<string>& f_l_name)
{
names = f_l_name;
}