Вопросы с тегом «string-literals»

Строковые литералы относятся к синтаксическому представлению литеральных константных строк в C и C ++.

416
C ++ многострочный строковый литерал

Есть ли способ иметь многострочные обычные текстовые константные литералы в C ++, как в Perl? Может быть, какая-то хитрость при разборе #includeфайла? Я не могу думать об этом, но мальчик, это было бы хорошо. Я знаю, что это будет в C ++...

162
Строковые литералы: куда они идут?

Меня интересует, где строковые литералы распределяются / хранятся. Я нашел один интригующий ответ здесь , говоря: Определение строки inline фактически встраивает данные в саму программу и не может быть изменено (некоторые компиляторы допускают это умным трюком, не беспокойтесь). Но это было связано...

152
Путь Windows в Python

Например, как лучше всего представить каталог Windows "C:\meshes\as"? Я пытался изменить сценарий, но он никогда не работал, потому что я не могу понять каталог правильно, я полагаю, из-за '\'действия в качестве...

94
Вычисление длины строки C во время компиляции. Это действительно constexpr?

Я пытаюсь вычислить длину строкового литерала во время компиляции. Для этого я использую следующий код: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } Все работает как...

92
Почему (только) некоторые компиляторы используют один и тот же адрес для одинаковых строковых литералов?

https://godbolt.org/z/cyBiWY Я вижу два 'some'литерала в коде ассемблера, сгенерированном MSVC, но только один с clang и gcc. Это приводит к совершенно другим результатам выполнения кода. static const char *A = "some"; static const char *B = "some"; void f() { if (A == B) { throw "Hello, string...

85
Кодировка Unicode для строковых литералов в C ++ 11

В ответ на связанный с этим вопрос я хотел бы задать вопрос о новых типах символьных и строковых литералов в C ++ 11. Кажется, что теперь у нас есть четыре вида символов и пять видов строковых литералов. Типы персонажей: char a = '\x30'; // character, no semantics wchar_t b = L'\xFFEF'; // wide...

85
«Время жизни» строкового литерала в C

Разве указатель, возвращаемый следующей функцией, не будет недоступен? char *foo(int rc) { switch (rc) { case 1: return("one"); case 2: return("two"); default: return("whatever"); } } Значит, время жизни локальной переменной в C / C ++ находится практически только внутри функции, верно? Это...

10
Как массивы символов должны использоваться в качестве строк?

Я понимаю, что строки в C - это просто символьные массивы. Поэтому я попробовал следующий код, но он дает странные результаты, такие как вывод мусора или сбой программы: #include <stdio.h> int main (void) { char str [5] = "hello"; puts(str); } Почему это не работает? Он компилируется чисто с...