如何将字符插入字符串向量
How to insert a char to a vector of strings
这不是将字符插入字符串向量的正确方法吗?
编译器returns-1073741819
当我运行它。
以下是代码,稍后我想在 'A'
旁边添加更多字符。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector <string> instruction;
instruction[0].push_back( 'A' );
return 0;
}
当您声明模板类型为 std::string
的向量时,您不能向其插入 char
,而只能在其中插入一个字符串。
如果要将单个字符串作为向量元素,只需执行以下操作:
std::vector <std::string> instruction;
// instruction.reserve(/*some memory, if you know already the no. of strings*/);
instruction.push_back("A");
关于您对 std::vector::operator[]: that is wrong, because, it returns the reference to the element at the index you requested. The moment when you use it(in your code), there is no element available and hence it's usage leads you undefind behavior
的使用
在您提到的评论中:
I will then add more chars next to A
如果您打算将字符连接到向量元素(字符串类型),您可以使用 operator+= 字符串将新字符添加到 已经存在的字符串 个元素。
std::vector <std::string> instruction;
instruction.push_back(""); // create an empty string first
instruction[0] += 'A'; // add a character
instruction[0] += 'B'; // add another character
或简单地 push_back
如您所愿。但在后一种情况下,您还需要在向量中存在一个字符串(空或非空)元素。
您必须先将第一个字符串添加到向量中才能使用字符串对象的方法push_back
。
int main()
{
vector <string> instruction;
instruction.push_back("");
instruction[0].push_back('A');
return 0;
}
但请记住,您可以简单地使用 string
class 的 +=
运算符来获得相同的结果:
instruction[0] += 'A';
这不是将字符插入字符串向量的正确方法吗?
编译器returns-1073741819
当我运行它。
以下是代码,稍后我想在 'A'
旁边添加更多字符。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector <string> instruction;
instruction[0].push_back( 'A' );
return 0;
}
当您声明模板类型为 std::string
的向量时,您不能向其插入 char
,而只能在其中插入一个字符串。
如果要将单个字符串作为向量元素,只需执行以下操作:
std::vector <std::string> instruction;
// instruction.reserve(/*some memory, if you know already the no. of strings*/);
instruction.push_back("A");
关于您对 std::vector::operator[]: that is wrong, because, it returns the reference to the element at the index you requested. The moment when you use it(in your code), there is no element available and hence it's usage leads you undefind behavior
的使用在您提到的评论中:
I will then add more chars next to A
如果您打算将字符连接到向量元素(字符串类型),您可以使用 operator+= 字符串将新字符添加到 已经存在的字符串 个元素。
std::vector <std::string> instruction;
instruction.push_back(""); // create an empty string first
instruction[0] += 'A'; // add a character
instruction[0] += 'B'; // add another character
或简单地 push_back
如您所愿。但在后一种情况下,您还需要在向量中存在一个字符串(空或非空)元素。
您必须先将第一个字符串添加到向量中才能使用字符串对象的方法push_back
。
int main()
{
vector <string> instruction;
instruction.push_back("");
instruction[0].push_back('A');
return 0;
}
但请记住,您可以简单地使用 string
class 的 +=
运算符来获得相同的结果:
instruction[0] += 'A';