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

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


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



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

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

6
Вычисление длины строки 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")); } Все работает как положено, программа выводит 4 и …

4
Почему (только) некоторые компиляторы используют один и тот же адрес для одинаковых строковых литералов?
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 merging!"; } …

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

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



4
Как массивы символов должны использоваться в качестве строк?
Я понимаю, что строки в C - это просто символьные массивы. Поэтому я попробовал следующий код, но он дает странные результаты, такие как вывод мусора или сбой программы: #include <stdio.h> int main (void) { char str [5] = "hello"; puts(str); } Почему это не работает? Он компилируется чисто с gcc …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.