Я читал многочисленные сообщения о том, почему два строковых литерала не могут быть добавлены в C++ и т. Д., А оператор + поддерживает добавление строкового литерала к целому.Объединение двух строк
Однако, я пытаюсь понять ошибку компилятора в следующем коде:
string str1, str2, str3;
int i = 10;
str1 = "Hello " + i;
str2 = i + "Mars";
str3 = "Hello " + i + "Mars";
инициализации str1
и str2
работают отлично, но строительство str3
дает следующее сообщение об ошибке:
example.cpp: In function
int main()
:
example.cpp:20:27: error: invalid operands of typesconst char*
andconst char [5]
to binaryoperator+
Q1: В сообщении об ошибке, я понимаю, const char [5]
относится к "Mars"
. Что означает const char*
, целое число i
после преобразования в char *
?
Q2: operator+
оставил к правой ассоциативности, я предполагаю, что строительство str3
можно записать в виде:
str3 = ("Hello " + i) + "Mars";
Проводит ли ("Hello " + i)
к char *
?
3: В следующем коде:
str5 = string("foo ") + "bar ";
str6 = string("foo ") + "bar " + i;
Установка str5
компилируется нормально, но str6
генерирует нагрузки (страницы и половину) сообщений об ошибках. Каков результат string("foo ") + "bar "
, это "string"
?
Заранее благодарим за понимание.
Вы пытаетесь добавить строку и целое число. Это ошибка. Рассмотрите: http://stackoverflow.com/questions/5590381/easiest-way-to-convert-int-to-string-in-c – squiguy