Строки по умолчанию char *
/ char[]
в C / C ++, только если вы явно скажете, что это std::string
, вы получите их.
Пример:
std::cout << "first:\t" << typeid("aa").name() << std::endl;
std::cout << "second:\t" << typeid(std::string("a")).name() << std::endl;
Выход:
first: A3_c
second: Ss
Результат:
- первый: массив
char
сдлина 3 (= 2 символа + конец) - секунда: это
std::string
Как вы можете видеть, если вы напишите "abc"
you wont получить std::string
.
Но: если вы напишите std::string str = "abc"
, вы получите std::string
, потому что используется оператор присваивания (=
): string& operator= (const char* s)