Во втором примере типом слова является std::string
, и по умолчанию нет преобразования типов из std::string
в тип char
.
С другой стороны, первый пример работаетпотому что его можно интерпретировать как массив char
(но на самом деле это просто c-стиль const char *
).
Если по какой-то причине вы захотите преобразовать std::string
в стиль cchar
массив, вы можете попробовать что-то вроде этого ...
#include <iostream>
#include <string>
#include <cstring>
int main(void)
{
std::string word;
word = "Giraffe";
char* arr = new char[word.length() + 1]; // accounting for the null-terminating character
strcpy(arr, word.data());
std::cout << arr[0] << std::endl;
delete[] arr; // deallocating our heap memory
return 0;
}