работа конструктора String(const char*)

134
07 марта 2019, 21:50

Был такой вопрос: Преобразование char[] в string

В дополнение к нему у меня возник дополнительный вопрос по работе конструктора String(char *). Что происходит при вызове такого конструктора - выделяется отдельная область памяти для класса String в которую копируется содержимое char * ?

Либо формируется какая то ссылка на имеющийся char * и переменную char * уже нельзя уничтожать?

Т.е. в переменную класса String попадает копия строки char * - или попадает некий указатель на некую область памяти, которую нужно будет сохранять ?

const char txt[]="Пример";
char * b = &txt;
String s(b);
Answer 1

В описании конструктора std::string сказано:

from c-string (4) string (const char* s);

Copies the null-terminated character sequence (C-string) pointed by s

т.е. копируется содержимое.

UPD в связи с комментариями про Arduino

Как верно заметил KoVadim, String и std::string - это совершенно разные классы.

На GitHub'е есть исходники в открытом доступе. Конкретно класс String описан в файле WString.cpp

Там также как и в std::string конструктор копирует данные.

READ ALSO
Как вывести ноль перед числом. С++

Как вывести ноль перед числом. С++

Через std::setfill('0') задаём заполнитель, через std::setw(N) задаём ширину выводимого числаВсё что не занято самим числом будет заполнено символом-заполнителем

196
C++ curl получить utf-8 в кирилице

C++ curl получить utf-8 в кирилице

Есть документ в интернете в UTF-8

171
переопределение метода qcombobox setText

переопределение метода qcombobox setText

Переопределил стандартный view у QComboBox по этому примеру:

143
could not initialize proxy - no Session REST запрос на Update

could not initialize proxy - no Session REST запрос на Update

Суть проблеми в том что у меня есть две модели, при одной модели Edit работаеш хорошо но когда добавил вторую модель с таким же функционалом...

169