Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Odczyt binarny a spacja/tab

Ostatnio zmodyfikowano 2017-11-27 23:13
Autor Wiadomość
dzejkob213
Temat założony przez niniejszego użytkownika
[C++] Odczyt binarny a spacja/tab
» 2017-11-27 19:31:42
Witam.
Załóżmy, że mam plik, który wygląda tak: (jest to zapis w pliku .PPM)

214   0   0     0 155   0     0   0 255
211 222   0   193 146 115     0   0   0

Jak widać, każdy element składa się z trzech liczb, każda od 0 do 255.
W przypadku gdy mamy liczbę która ma np. 2 cyfry, to brak pierwszej cyfry jest zastępowany spacją (np <spacja>12)
W przypadku gdy mamy liczbę, która ma np. 1 cyfrę, to brak dwóch pierwszych cyfr jest zastępowany dwoma spacjami. (np. <spacja><spacja>0)

Moje pytanie brzmi - czy ktoś mógłby mnie naprowadzić (bo gotowca nie chcę) jak zaimplementować to do odczytywania?
Każdy trzy liczbowy element chcę wczytywać do osobnego inta, np:
int[0]=21400
int[1]=01550
int[2]=00255
int[3]=2112220
I tu wlasnie jest problem - jak z jednej strony w zapisie do inta pomijac spacje, a z drugiej strony robic nowego inta co 3 cyfry, ktore nie wiadomo czy będą np. <spacja> <spacja> 0, czy też np. <spacja> 21, albo i 255

Czy ktoś mógłby mnie naprowadzić na jakąś myśl?
Pozdrawiam
P-167268
pekfos
» 2017-11-27 19:34:39
Wczytywanie intów operatorem >> pomija spacje. Jeśli pomiędzy wartościami jest zawsze przynajmniej jedna spacja, to to wystarczy.
P-167269
dzejkob213
Temat założony przez niniejszego użytkownika
» 2017-11-27 19:38:47
Okej, ale jak w takim razie co trzy liczby wczytywać to do nowego inta? ROzumiem, że w pętli, ale chodzi o sam fakt, jak on ma rozróżnić gdzie jest spacja dopełniająca (<spacja><spacja>0) a gdzie jest następny trzy liczbowy element (255   0   0 <spacja konczaca element>)


edit: pokaze inaczej problem:
255<spacja><spacja><spacja>0<spacja><spacja><spacja>0<spacja><spacja><spacja> *i tu mamy nowy element z trzech liczb*

i teraz jak zrobić, żeby spacje pomijał, ale przy napotkaniu trzech spacji po trzech cyfrach/liczbach ładował dalszą część do następnego inta?
P-167270
pekfos
» 2017-11-27 19:54:17
Po co rozróżniać spacje, skoro można zliczać wczytane elementy. Do jednego 'inta' zawsze będą 3.
P-167272
dzejkob213
Temat założony przez niniejszego użytkownika
» 2017-11-27 20:01:04
Okej, rozumiem - petla (i=0;i<3;i++), ktora wczytuje pokolei kazdy nastepny znak do int[j], a nad tą pętlą druga pętla, która idzie po j aby każdy następny 3 liczbowy element był wpisywany do int[j+1]?
P-167274
pekfos
» 2017-11-27 20:49:58
Z tą pętlą to trochę może przesada, ale tak.
P-167290
dzejkob213
Temat założony przez niniejszego użytkownika
» 2017-11-27 22:56:16
Ale zaraz zaraz, to nie zadziała.
W końcu, pętla 3 razy wpisuje cyfre do rgb.
No i, jak bym mial np 1 1 1 , to zadziala, bede mial np rgb[0]=111
ale jak np mialbym podane 255 255 255, to bedzie rgb[0]=255, bo wpisze pierwsze 3 cyfry...
P-167335
pekfos
» 2017-11-27 22:59:40
A od kiedy 214, 0, 0 to ten sam kolor co 21, 40, 0? Obie liczby zapisałbyś tak samo wg tego, co napisałeś w pierwszym poście.
P-167336
« 1 » 2
  Strona 1 z 2 Następna strona