Во-первых, std::string
не является C-строкой. Вам не нужно NULL-прекратить его. Во-вторых, оператор []
действителен только для индексов < std::string::length()
, что означает, что по крайней мере N элементов должно быть выделено заранее, прежде чем вы сможете получить доступ к элементу между 0
и N-1
.
std::string str(4); // construct a string of size 4
str[0] = 'A';
str[1] = 'b';
str[2] = 'h';
str[3] = 'i';
std::cout << str;
Редактировать: Но также см. Ответ Джонсивеба . Большое преимущество std::string
перед C-строками в том, что вам не нужно беспокоиться о распределении памяти. Вы можете использовать оператор +=
или функцию-член push_back
и можете строить строку за символом, не беспокоясь о том, сколько памяти зарезервировать.