• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ std::string , char* , std::wstring

0 głosów
900 wizyt
pytanie zadane 27 marca 2019 w C i C++ przez dawid2002 Mądrala (5,190 p.)

Witam!

Uczę się programować w C++ i zastanawiają mnie dwie sprawy. Jakie zastosowanie w tym języku mają łańcuchy znaków w stylu C (char*) ? Skoro wygodniejsze jest używanie std::string, które oferuje sporo narzędzi do zarządzania ciągami znaków. Druga sprawa, z tego, co wiem używa się wstring wtedy kiedy mamy do czynienia z "szerokimi znakami", tylko że nie wiem czym są te "szerokie znaki", i chciałbym definicji tego pojęcia.

Z góry dziękuje za pomoc!

2 odpowiedzi

+1 głos
odpowiedź 27 marca 2019 przez j23 Mędrzec (195,240 p.)
edycja 28 marca 2019 przez j23

Znaki szerokie to znaki, które mają kody większe od pojemności typu char. W praktyce znaki kodowane są w kodowaniu unicode (UCS-2/UTF-16/UTF-32).

komentarz 27 marca 2019 przez dawid2002 Mądrala (5,190 p.)
Dzięki.
komentarz 27 marca 2019 przez dawid2002 Mądrala (5,190 p.)

@j23,

Skoro jesteś już w temacie , wiesz jakie jest zastosowanie łańcuchów znaków w stylu C ? Oraz kiedy je używać ?

Z góry dziękuje za odpowiedź

komentarz 27 marca 2019 przez j23 Mędrzec (195,240 p.)

Pytasz się o to, kiedy (i po co) używać c-stringi zamiast std::string?

komentarz 27 marca 2019 przez dawid2002 Mądrala (5,190 p.)

@j23,  Tak

komentarz 28 marca 2019 przez j23 Mędrzec (195,240 p.)

std::stringów używasz wszędzie tam, gdzie masz do czynienia z "dynamicznymi" łańcuchami tekstowymi. W przypadku literałów tekstowych std::string większego zastosowania nie ma... zresztą w C++17 masz klasę std::string_view.

komentarz 28 marca 2019 przez dawid2002 Mądrala (5,190 p.)

Dzięki yes

+1 głos
odpowiedź 27 marca 2019 przez VirtualMember Pasjonat (15,790 p.)
char* to przeszłość, spotkasz się z tym głównie wtedy gdy masz doczynienia z jakimś zewnętrznym libem, projektem, który to posiada, a Ty musisz z niego korzystać. Zauważ, że char* to tak samo jakbyś miał int* - tablica zmiennych typu int.
komentarz 27 marca 2019 przez dawid2002 Mądrala (5,190 p.)

Dzięki wielkie yes

Podobne pytania

0 głosów
4 odpowiedzi 3,060 wizyt
0 głosów
1 odpowiedź 1,390 wizyt
pytanie zadane 13 października 2018 w C i C++ przez jegor377 Stary wyjadacz (13,230 p.)
–2 głosów
1 odpowiedź 758 wizyt
pytanie zadane 22 sierpnia 2019 w C i C++ przez niezalogowany

93,424 zapytań

142,421 odpowiedzi

322,643 komentarzy

62,782 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...