将字符串的子字符串设置为向量的char元素时的EXC_BAD_访问(C++)
我正在尝试制作一个矢量扩展标题。其中一个函数设置控制台输入cin的向量。它使用以下代码:将字符串的子字符串设置为向量的char元素时的EXC_BAD_访问(C++),c++,string,vector,exc-bad-access,C++,String,Vector,Exc Bad Access,我正在尝试制作一个矢量扩展标题。其中一个函数设置控制台输入cin的向量。它使用以下代码: vector<char> cveccin(){ string cinval; cin>>cinval; vector<char> creader; for (int i=0; i<cinval.size(); i++) { creader[i]=cinval[i]; } return creader;
vector<char> cveccin(){
string cinval;
cin>>cinval;
vector<char> creader;
for (int i=0; i<cinval.size(); i++) {
creader[i]=cinval[i];
}
return creader;
}
我在测试中使用了这个函数,它给了我EXC_BAD_访问权限。这里出了什么问题?如果要将元素添加到std::vector use
vector<char> creader;
creader.push_back( var );
要使用数组表示法,必须首先设置std::vector的大小
vector<char> creader;
creader.resize ( 10 );
creader[0] = var1;
creader[1] = var2;
如果要将元素添加到std::vector,请使用
vector<char> creader;
creader.push_back( var );
要使用数组表示法,必须首先设置std::vector的大小
vector<char> creader;
creader.resize ( 10 );
creader[0] = var1;
creader[1] = var2;
问题是您创建的creader向量为空。因为它不包含任何元素,所以您无法访问或索引任何元素。要解决此问题,例如,您可以使用push_-back方法,而不是索引和分配。问题在于您创建的creader向量为空。因为它不包含任何元素,所以您无法访问或索引任何元素。例如,要解决此问题,您可以使用push_-back方法,而不是索引和赋值。问题在于您的向量大小为零,而使用[]不会使其变得更大 有一个班轮可以满足你的要求
vector<char> cveccin()
{
string cinval;
cin >> cinval;
return vector<char>(cinval.begin(), cinval.end());
}
该代码创建大小正确的向量,将cinval字符串复制到该向量,并从函数返回该向量,所有操作都在一行中完成。不是C++了不起!p> 问题是向量的大小为零,使用[]不会使它变大 有一个班轮可以满足你的要求
vector<char> cveccin()
{
string cinval;
cin >> cinval;
return vector<char>(cinval.begin(), cinval.end());
}
该代码创建大小正确的向量,将cinval字符串复制到该向量,并从函数返回该向量,所有操作都在一行中完成。不是C++了不起!p> 谢谢你帮助我,我没有用那种方式,因为约翰的答案非常简单。谢谢你帮助我,我没有用那种方式,因为约翰的答案非常简单。谢谢!我使用你的答案是因为它最简单,但所有其他答案也都有效。谢谢!我使用你的答案是因为它最简单,但所有其他答案也都有效。谢谢你!你所有的答案都很好,我想会有用的,但我用了约翰的,因为它是最简单的。谢谢你!你所有的答案都很好,我想会有用的,但我用了约翰的答案,因为它是最简单的。