ksry Temat założony przez niniejszego użytkownika |
Kilka operacji na stringu » 2012-08-20 18:33:38 W jaki sposób mogę wyciągnąć: -liczbę linijek w poszczególnym stringu -liczbę znaków w poszczególnej linijce -poszczególny znak z poszczególnej linijki string wygląda następująco string = "12345\n12345\n12345"; |
|
czosnek17 |
» 2012-08-20 18:35:03 |
|
ksry Temat założony przez niniejszego użytkownika |
» 2012-08-20 18:54:50 Z pierwszego linku nie dowiaduję się nic konkretnego o moim problemie. Size i length zwrócą mi 15 w powyższym tekście, czy 19? Z drugiego linku, nadal nic się nie dowiedziałem. Chcę znaleźć znak mając numer jego linijki i kolej w szeregu. Mam string z pierwszego posta. chcę znaleźć 4 z ostatniej linijki, więc w argumencie powinienem dać, że jest w 3 linijce i 4 znakiem. W tamtych przykładach muszę podać już konkretny znak, co mija się z celem |
|
DejaVu |
» 2012-08-20 18:57:30 1. Trudno uruchomić aby sprawdzić?
2. Parsowanie łańcucha string to nie jest już taki spacerek.
3. Istnieją funkcje do konwersji tekstu na liczbę (ale najpierw trzeba go sobie pociąć).
4. Można użyć też std::stringstream |
|
Mrovqa |
» 2012-08-20 19:10:35 Skoro masz nr linii i kolej w wersie, to co za problem poszukać ręcznie? Sprawdzaj znak po znaku (bo inaczej się nie da, jeśli linia ma zmienną długość). Jak po drodze spotkasz '\n' - oznacza, że przechodzisz do nowej linii. Gdy dojdziesz do odpowiedniej linii to przesuwasz się o tyle znaków, o ile masz podane w drugim argumencie ;) Kilka linii kodu.
/edit: lol... post 13 minut przede mną, a nie widziałem go przed dodaniem swojego... Usunąłeś @DejaVu powiadomienie o nowych postach w momencie naciśnięcia "Napisz nową wiadomość"?
<< @Dejavu - niczego nie zmieniałem >> |
|
ksry Temat założony przez niniejszego użytkownika |
» 2012-08-20 19:48:47 A więc, tak czy inaczej w moim programie będę musiał sprawdzić każdą liczbę, więc wpadłem na pomysł by skanować cały plik jedną pętlą z jakąś funkcją.. ale jaką? to pytanie numer jeden. Druga istotna rzecz, muszę wiedzieć w jakiej linijce znajduje się aktualny progress skanu. Jakieś pomysły? Ach, i liczby mają być stringiem, nie potrzebuję ich jako int. Dlatego to nie jest istotne. I dzięki za poświęcony czas na takie błahostki :P
@Mrovqa ale string za każdym razem jest inny i raczej nie widzi mi się by użytkownikowi programu chciało się szukać kilkukrotnie odpowiedniej literki. |
|
Mrovqa |
» 2012-08-20 20:05:28 @up nie zrozumiałeś mnie i wpadłeś na to, co Ci właśnie napisałem... Nie trzeba tam żadnej funkcji, wystarczy wskaźnikiem przejechać. A aktualna linia? W zmiennej trzymaj. To dosłownie kilka linijek. |
|
ksry Temat założony przez niniejszego użytkownika |
» 2012-08-21 13:51:05 tak wygląda mój program #include <iostream>
int main() { char* ps = "12345/12345/12345"; int linia = 1; //aktualnie skanowana linijka int znak = 0; //wskaznik zaczyna od 0
while(znak <= 17) { if(ps+znak == "/") linia++; else znak++; } std::cout << "Liczba znaków to: " << (znak+1) << std::endl; std::cout << "Liczba linii to: " << linia; return 0; } mam 2 pytania: - jak poprawnie zadeklarować warunek pętli (while()), bo podejrzewam że coś jest nie tak :P - dlaczego warunek if w pętli nigdy się nie spełnia? - dobrze będzie zamienić \n na / (tekst nie będzie wyświetlany nigdy, będzie trzymany w zmiennej a później zapisywany i czytany z pliku do stringu)? tak to chyba działa, ale nic mi po tym jak nie znam linijki, bo nie będe mógł do tego dojść do interesującego mnie znaku |
|
« 1 » 2 |