Изменение строки по индексу с помощью [] приводит к неопределённому поведению. Этот оператор предназначен для быстрой обработки строк. Если программист знает, что хочет.
А если не уверен, то надо использовать другую функцию at, которая следит за неправильным доступом к строке и вызовет исключение.
#include <iostream>
int main(){
try {
std::string E;
E.at(0) = 'a';
std::cout << E.at(0);
std::cout << E; }
catch(std::exception const & ex){
std::cerr<<"exception : " << ex.what()<<std::endl;
}
}
проверяем :
exception : basic_string::at: __n (which is 0) >= this->size() (which is 0)
Исключение : аргумент индекса равен нулю, который больше или равен размеру строки, которая равняется нулю.
Чтобы добавить буквы к строке надо использовать другие функции : например оператор +=
E += 'a' ;
Почему у вас пустая строка - это неопределённое поведение. Зависит от реализации компилятора и случая.
E.size()- вы увидите 0. Лучше уж писатьE='a';... – Harry May 14 '21 at 04:09E='a';не скомпилится. Но три плюса вверх поставили. – KoVadim May 14 '21 at 07:07