C++ - Char - velká data – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C++ - Char - velká data – C / C++ – Fórum – Programujte.comC++ - Char - velká data – C / C++ – Fórum – Programujte.com

 

P00rC0de
~ Anonymní uživatel
1 příspěvek
6. 3. 2016   #1
-
0
-

Zdravím,

není ani tak důležité co dělám za konkrétní program, spíše jde o učební důvody jazyka. Snažím se program napsat pouze v čistém C++ s použitím primitivního typu char, bez vektorů, knihoven string.h atd. Takže mám několik nejasností, a tak doufám, že někdo zkušený mě je pomůže více objasnit.

V programu pracuji s velkým množstvím dat, které chci uložit do charu. Co mě není jasné:

  • Do obyčejného charu můžu uložit jeden znak (nepřipadá v úvahu jeho využití po jednom znaku).
  • Do pointer charu (char * a = "asd" ) můžu uložit nějaký řetezec, ale pouze při inicializaci za běhu programu není možné. Otázkou zůstává jak dlouhý. Moje úvaha usigned char = > 0-255. Při ASCII jeden znak => 1byte.  Tudíž můžu zapsat do pointer charu 255 znaků - nulový znak ?
  • Pokud budu potřebovat pracovat s delším textem jak > 256 znaků, je možné pořád pracovat s char typem, rozdělit na více charů?
  • Možnost jak za běhu programu zapisovat data je pouze přes dynamicky alokovanou paměť, nemam pravdu?
  • Má se smysl pachtit se samotným charem? (Určitě né, string.h, vektor by to vše vyřešilo...) I přesto bych ocenil váš názor

Děkuji za případnou reakci.

Nahlásit jako SPAM
IP: 212.96.160.–
KIIV
~ Moderátor
+43
God of flame
7. 3. 2016   #2
-
0
-

Delat to vlastnim zpusobem je dobre pro vyuku, pro realne pouziti je lepsi pouzit knihovnu <string> (neplest si se string.h/cstring - to je libka z C pro manipulaci s polem znaku)

Do pointeru jako takoveho se nevejde nic, krom samotneho pointeru, coz je 2/4/8 bajtu podle architektury procesoru.

Na retezec musis nejprve alokovat pamet pomoci new char[velikost], pak tam muzes ulozit retezec o delce velikost-1 a znak NUL na ukonceni.

Narocnejsi je spise znat tu velikost, nebo ji za behu menit (alokovat novou pamet, presunout puvodni retezec a uvolnit ho, pripojit novy retezec...)

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 137 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý