c-strings
Dlaczego pojawia się błąd segmentacji podczas pisania do "char *s" zainicjalizowanego literalnym łańcuchem znaków, ale nie "char s[]"?
Następujący kod otrzymuje błąd seg w linii 2:
char *str = "string";
str[0] = 'z'; // could be also written as *str = 'z'
p ... tr);
Podczas gdy to działa doskonale:
char str[] = "string";
str[0] = 'z';
printf("%s\n", str);
Testowane z MSVC i GCC.
Dlaczego pojawia się błąd segmentacji podczas pisania do łańcucha inicjalizowanego "char *s", ale nie "char s[]"?
Następujący kod otrzymuje błąd seg w linii 2:
char *str = "string";
str[0] = 'z';
printf("%s\n", str);
Podczas gdy to działa doskonale:
char str[] = "string";
str[0] = 'z';
printf("%s\n", str);
Testowane z MSVC i GCC.
Jak konwertować CString i std:: string STD:: wstring na siebie?
CString jest bardzo poręczny, natomiast {[4] } jest bardziej kompatybilny z kontenerem STL. Używam hash_map. Jednak hash_map ... src.GetString());
Czy jest z tym jakiś problem?
Dodatkowo, jak Mogę przekształcić z std::wstring na std::string i odwrotnie?
C-podziel ciąg na tablicę ciągów
Nie jestem do końca pewien jak to zrobić w C:
char* curToken = strtok(string, ";");
//curToken = "ls -l" we will say
//I need a array of strings containing "ls", "-l", and NULL for execvp()
Jak miałbym to zrobić?
Jaki jest czas życia wyniku std::string:: C str()?
W jednym z moich programów, muszę połączyć się z jakimś starszym kodem, który działa z const char*.
Powiedzmy, że mam strukt ... is about to be destroyed, before name and server
}
Czy mam od razu skopiować wynik c_str() do w innym miejscu ?
Dziękuję.
Jaka jest różnica między memcmp, strcmp i strncmp w C?
Napisałem ten mały fragment kodu w C, aby przetestować memcmp() strncmp() strcmp() Funkcje W C.
Oto kod, który napisałem:
... w oraz memcmp() i strncmp() w poleceniach if zwrócono 0.Z drugiej strony strcmp() nie. wygląda na to, że muszę użyć strcmp().
Czy można wydrukować tylko określony fragment łańcucha C, bez tworzenia osobnego podłańcucha?
Powiedzmy, że mam:
char* string = "Hello, how are you?";
Czy jest możliwe wypisanie tylko ostatnich 5 bajtów tego łańcucha? A co z pierwszymi 5 bajtami? Czy istnieje jakaś odmiana printf, która by na to pozwoliła?
Czy źle jest deklarować ciąg w stylu C bez const? Jeśli tak, to dlaczego?
Robienie tego w C++
char* cool = "cool";
Kompiluje dobrze, ale daje mi Ostrzeżenie:
Przestarzała konwersja ze stałej ... zadano mi to pytanie:
Czy błędną praktyką jest deklarowanie ciągu w stylu C bez modyfikatora const? Jeśli tak, to dlaczego?