Запитання з тегом «string-literals»

Рядові літерали стосуються синтаксичного представлення константних рядків літералу в C та C ++.


10
C ++ багаторядковий літеральний рядок
Чи є спосіб мати багаторядковий звичайний текст, постійні літерали в C ++, à la Perl? Можливо, якийсь трюк розбору з #includeфайлом? Я не можу придумати одного, але хлопче, це було б добре. Я знаю, що це буде в C ++ 0x.



8
Строкові літерали: куди вони йдуть?
Мене цікавить, де виділяються / зберігаються рядкові літерали. Я знайшов один інтригуючий відповідь тут , кажучи: Визначення рядкового рядка фактично вбудовує дані в саму програму і не може бути змінено (деякі компілятори дозволяють це розумним трюком, не турбуйте). Але це стосувалося C ++, не кажучи вже про те, що він …

5
Шлях Windows у Python
Який найкращий спосіб представити, наприклад, каталог Windows "C:\meshes\as"? Я намагаюся змінити сценарій, але він ніколи не спрацьовує, тому що я, здається, не можу правильно довідати каталог, я вважаю, що він '\'виступає як символ втечі?

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!"; } …

4
Як використовувати аргумент Macro як рядковий літерал?
Я намагаюся зрозуміти, як написати макрос, який передаватиме як функцію рядкового літерального подання імені змінної разом із самою змінною. Наприклад, задана наступна функція. void do_something(string name, int val) { cout << name << ": " << val << endl; } Я хотів би написати макрос, щоб я міг зробити це: …

1
Кодування Unicode для рядкових літералів в C ++ 11
Після відповідного запитання я хотів би запитати про нові типи символів і рядкових літералів у C ++ 11. Здається, що зараз у нас є чотири типи символів і п’ять типів рядкових літералів. Типи персонажів: char a = '\x30'; // character, no semantics wchar_t b = L'\xFFEF'; // wide character, no …

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

2
Яке обґрунтування дужок у необроблених рядкових літералах C ++ 11 R “(…)”?
У C ++ 11 представлена ​​дуже зручна функція, яка називається необробленими рядковими літералами, що є рядками без символів виходу. І замість того, щоб писати це: regex mask("\\t[0-9]+\\.[0-9]+\\t\\\\SUB"); Ви можете просто написати це: regex mask(R"(\t[0-9]+\.[0-9]+\t\\SUB)"); Досить читабельніший. Однак зверніть увагу, що додаткові дужки навколо рядка потрібно розмістити, щоб визначити необроблений літеральний …



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.