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
|
|
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. |
|
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? |
|
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. |
|
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]? |
|
pekfos |
» 2017-11-27 20:49:58 Z tą pętlą to trochę może przesada, ale tak. |
|
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... |
|
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. |
|
« 1 » 2 |