Жаль, что я не могу понять такую основную вещь в c ++, но строки в стиле c работают так, как я и не ожидал. Например, я создаю это так:
char* cstr = new char[1];
Инициализируется: Íýýýýý «« «« «« «« ». Как обычно, я могу установить только первый символ, потому что другие на самом деле не существуют (или я думал, что они не существуют). При работе со строками в стиле c все это барахло попадает и все отлично работает.
Теперь я смешал std :: string с этими c-stlye, и я получил беспорядок. С этим кодом:
std::string str = "aaa";</p>
<p>str += cstr;
В итоге я получаю: aaaÍýýýýý «« «« «« «« », но теперь эти символы фактически существуют, так как string.size () возвращает длину, включая этот мусор.
Я не могу найти, почему это происходит, но это должно быть связано с созданием строки, потому что что-то вроде char * cstr = "aaa" приводит к aaa без какого-либо дополнительного мусора, но попытка изменить инициализированную строку таким образом приводит к нарушение доступа к памяти. Может ли кто-нибудь объяснить мне это поведение, пожалуйста? Спасибо!
PS: Не удалось загрузить мой JavaScript, поэтому, если кто-то сможет правильно отформатировать этот пост, я буду рад!
Ответ: О, боже! Как я мог забыть об этом ... спасибо всем за, ну, немедленный ответ. Лучший из них был от Minitech, поэтому я отмечу это как ответ, как только загрузится мой java-скрипт: /