«string-literals» etiketlenmiş sorular

Dize değişmezleri, C ve C ++ 'daki değişmez sabit dizelerin sözdizimsel temsiliyle ilgilidir.


10
C ++ çok satırlı dize değişmez değeri
C ++, à la Perl'de çok satırlı düz metin, sabit değişmez değerler kullanmanın bir yolu var mı? Belki #includebir dosya ing ile bazı ayrıştırma hilesi ? Birini düşünemiyorum, ama oğlum, bu iyi olurdu. C ++ 0x olacağını biliyorum.



8
Dize değişmezleri: Nereye gidiyorlar?
Ben dize değişmezleri tahsis / depolanan nerede ilgileniyorum. Burada ilginç bir cevap buldum : Satır içi bir satır tanımlamak aslında verileri programın içine gömer ve değiştirilemez (bazı derleyiciler buna akıllı bir hile ile izin verir, rahatsız etmeyin). Ancak, rahatsız etmemesini söylediğinden bahsetmemek için C ++ ile ilgisi vardı. Rahatsız ediyorum. …

5
Python'da Windows yolu
Örneğin, bir Windows dizinini temsil etmenin en iyi yolu nedir "C:\meshes\as"? Ben bir komut dosyasını değiştirmek için çalışıyoruz ama asla dizini doğru almak gibi olamaz, çünkü '\'kaçış karakter olarak hareket varsayalım işe yaramaz ?

6
Derleme zamanında bir C dizesinin hesaplama uzunluğu. Bu gerçekten bir konstexpr mi?
Derleme zamanında bir dizgenin uzunluğunu hesaplamaya çalışıyorum. Bunu yapmak için aşağıdaki kodu kullanıyorum: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } Her şey beklendiği gibi çalışır, program 4 ve 8'i yazdırır. …

4
Neden (sadece) bazı derleyiciler aynı dize değişmezleri için aynı adresi kullanıyor?
https://godbolt.org/z/cyBiWY 'some'MSVC tarafından oluşturulan assembler kodunda iki değişmezi görebiliyorum , ancak sadece bir tanesi clang ve gcc ile. Bu, kod yürütmenin tamamen farklı sonuçlarına yol açar. static const char *A = "some"; static const char *B = "some"; void f() { if (A == B) { throw "Hello, string merging!"; …

4
Makro değişkeni dize değişmezi olarak nasıl kullanılır?
Değişken isminin hem bir dize değişmez gösterimini hem de değişkenin kendisini bir işleve geçirecek bir makroyu nasıl yazacağımı bulmaya çalışıyorum. Örneğin aşağıdaki işlev verildi. void do_something(string name, int val) { cout << name << ": " << val << endl; } Bunu yapabilmek için bir makro yazmak istiyorum: int my_val …

1
C ++ 11'de dize değişmezleri için Unicode kodlaması
İlgili bir soruyu takiben , C ++ 11'deki yeni karakter ve dize değişmez türleri hakkında soru sormak istiyorum. Görünüşe göre şimdi dört çeşit karakterimiz ve beş çeşit dizgi değişmezimiz var. Karakter türleri: char a = '\x30'; // character, no semantics wchar_t b = L'\xFFEF'; // wide character, no semantics char16_t …



4
Karakter dizileri dize olarak nasıl kullanılmalıdır?
C'deki dizelerin sadece karakter dizileri olduğunu anlıyorum. Bu yüzden aşağıdaki kodu denedim, ancak çöp çıktısı veya program çökmeleri gibi garip sonuçlar veriyor: #include <stdio.h> int main (void) { char str [5] = "hello"; puts(str); } Bu neden çalışmıyor? Temiz bir şekilde derler gcc -std=c17 -pedantic-errors -Wall -Wextra. Not: Bu yazı, …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.