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

Kilka operacji na stringu

Ostatnio zmodyfikowano 2012-08-21 14:23
Autor Wiadomość
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";
P-63097
czosnek17
» 2012-08-20 18:35:03
P-63098
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
P-63101
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
P-63102
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 >>
P-63109
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.
P-63114
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.
P-63121
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
P-63180
« 1 » 2
  Strona 1 z 2 Następna strona