Этот код подходит для всех платформ. Строка компилируется в двоичный файл как статический строковый литерал. Например, если вы работаете в Windows, вы можете даже открыть свой .exe с помощью блокнота и найти саму строку.
Так как это статическая строка, область литерала не имеет значения.
Объединение строк:
Следует обратить внимание на то, что в некоторых случаях идентичные строковые литералы могут быть «объединены» для экономии места в исполняемом файле. В этом случае каждый строковый литерал, который был тем же самым, мог иметь тот же адрес памяти. Вы никогда не должны предполагать, что это будет или не будет так.
В большинстве компиляторов вы можете указать, использовать ли статический пул строк для перемешивания литералов.
Максимальный размер строковых литералов:
У нескольких компиляторов максимальный размер строкового литерала. Например, для VC ++ это примерно 2048 байт.
Изменение строкового литерала дает неопределенное поведение:
Изменение строкового литерала никогда не должно выполняться. У него неопределенное поведение.
char * sz = "this is a test";
sz[0] = 'T'; //<--- undefined results
Широкие строковые литералы:
Все вышесказанное в равной степени относится и к широким строковым литералам.
Пример: L "это широкий строковый литерал";
Стандарт C ++ гласит: (раздел lex.string)
1 Строковый литерал - это последовательность
символов (как определено в
lex.ccon ) в двойных кавычках, необязательно начиная с
буква L, как в «...» или L «...». Строковый литерал, который не начинается
с L является обычным строковым литералом, также называемым узким
строковый литерал. Обычный строковый литерал имеет тип "массив из n
Const
char "и статическая продолжительность хранения ( basic.stc ), где n - это
размер
строки, как определено ниже, и инициализируется с
персонажи. Строковый литерал, который начинается с L, такой как L "asdf",
является
широкий строковый литерал. Широкий строковый литерал имеет тип "массив
N
const wchar_t "и имеет статическую продолжительность хранения, где n - размер
из
строка, как определено ниже, и инициализируется с заданным символом
Ослабляет.
2 Все ли строковые литералы различны (то есть хранятся в
неперекрывающиеся объекты) определяется реализацией. Эффект
из
попытка изменить строковый литерал не определена.