#include <iostream>
#include <string>
int main() {
std::string str = "hello " "world" "!";
std::cout << str;
}
Следующее компилируется, запускается и печатается:
Привет мир!
Кажется, что строковые литералы объединяются вместе, но, что интересно, это невозможно сделать с помощью operator +
:
#include <iostream>
#include <string>
int main() {
std::string str = "hello " + "world";
std::cout << str;
}
Это не скомпилируется.
посмотреть вживую
Почему такое поведение в языке? Моя теория заключается в том, что это позволяет создавать строки с несколькими операторами #include
, потому что операторы #include
должны находиться на отдельной строке. Возможно ли такое поведение просто из-за грамматики языка, или это исключение, которое было добавлено, чтобы помочь решить проблему?
C/C++
, а неJava
. - person devnull   schedule 07.02.2014