Nějak to pořád nikde nemůžu vyhrabat. Jak se dá vypsat část char* ?
++ZDROJAK_1++
Výstup by měl být:
1
Nějak to pořád nikde nemůžu vyhrabat. Jak se dá vypsat část char* ?
++ZDROJAK_1++
Výstup by měl být:
1
char* je normální pole znaků, takže jen určíš jakej znak na jakým indexu (pozici) chceš
char* slovo = "++ZDROJAK_1++";
char znak = *(slovo + 10); // nebo: slovo[10];
Ještě menší otázku, jak vypsat těch znaků víc? V pythonu to šlo takto:
promenna = "12345678912345678911"
print(promenna[10:20])
výstup:
2345678911
Existuje nějáký obdobný způsob?
#7 vitamin
to ma jen jednu drobnou chybu.. neosekava to na 10 znaku.. vypise to vse az na konec..
zavaznejsi je, ze ani nekontrolujes, jestli neni retezec kratsi.. bude to pak vypisovat nejaky smeti do prvni nuly
#8 KIIV
zabudol som dat bodku, cize to bude %.10s
samozrejme ze to nekontroluje velkost pola, ale to uz je lepsie osetrovat vzhladom na konkretnu situaciu.
Takto?
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
char* cisla = "3466856834235760756745636487";
// vypise cisla od indexu 5 az 10
for_each(cisla + 5, cisla + 10, [&](char c) { cout << c; });
return 0;
}
A pokud máš pole charů jako char* (přes ukazatel) tak nejde použít sizeof() ale jedině strlen() a doporučuju spíš použít nějakej buffer, pokud ten text není konstanta
Zkusil bych to takto (podobne jako ingiraxo, akorat to for_each se mi zda trochu jako raketomet na komara :), tedy jen muj nazor):
char* pole = "++Zdrojak_1++";
for(int a = 9; a < 11; a++)
cout << pole[a];
Ale pokud chces vypsat neco jako to cislo (libovolny retezec) za retezcem "zdrojak_" az do prvniho znaku "+", pridas jen podminku navic:
for(int a = 9; a<11, pole[a]!='+'; a++)
cout << pole[a];
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku