Как заставить MinGW обрабатывать тексты типа «текст» как const char * - PullRequest
0 голосов
/ 19 июля 2011

AFAIK, после обновления до MinGW 4.4. * некоторое время назад все мои буквально написанные строки (например, "i'm the string") обрабатываются как std::string. Есть ли опция командной строки, чтобы MinGW воспринимал их как const char*, как это было раньше?

1 Ответ

2 голосов
/ 06 февраля 2013

Строки по умолчанию 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...