Wczytywanie stringa do wystąpienia znaku

Odpowiedz Nowy wątek
2015-01-17 19:37
anonymous23456
0

Jak wczytać do stringa cały tekst do pierwszego wystąpienia któregoś ze znaków? getline obsługuje tylko jeden znak, a jeśli chciałbym wczytać do pierwszego ' ' lub '\n' ?

Pozostało 580 znaków

2015-01-17 19:46
0

wystarczy wejsc do dokumentacji

http://www.cplusplus.com/reference/istream/istream/getline/

getline w zupelnosci powinien wystarczyc

Pozostało 580 znaków

2015-01-17 19:47
anonymous23456
0
string read_command () {
    char temp;
    cin>>temp;
    string result = "";
    while (temp != ' ' && temp != '\n') {
        result += temp;
        cin>>temp;
    }
    return result;
}

Napisałem taką funkcję, jednak nie działa ona poprawnie, gdyż znak ' ' nie chce wczytać się do chara(?).
http://ideone.com/e9lpoj

Pozostało 580 znaków

2015-01-17 19:49
anonymous23456
0

@fasadin : nie rozumiem wykorzystania getline w rozwiązaniu problemu. Funkcja wczytuje do znaku podanego jako argument albo do EOF. Nic więcej nie można z tym zrobić imo.

Pozostało 580 znaków

2015-01-17 19:56
0

http://ideone.com/4mxZTZ

zalezy dokladnie do czego potrzebujesz. jezeli tylko do spacji to uzyj po prostu cin (czyta do pierwszej spacji) jezeli tylko do entera uzyj po prostu getline (czyta do pierwszego entera) jezeli potrzebujesz do czegos specyficznego do sprecyzuj pytanie

edytowany 1x, ostatnio: fasadin, 2015-01-17 19:56

Pozostało 580 znaków

2015-01-17 19:59
anonymous23456
0

Chcę wczytywać do pierwszego wystąpienia jednego ze znaków: spacja, enter.

Pozostało 580 znaków

2015-01-17 20:03
0

ok, juz teraz rozumiem. Wczytaj na poczatku do napotkania \n (powrzucaj to do vectorow) a pozniej ten vector rozdrobnij jezeli wystapi spacja

http://stackoverflow.com/questions/236129/split-a-string-in-c

uzyj tego linka. Nigdy nie potrzebowalem czegos takiego wiec nie wiem czy istnieje sposob zeby zrobic to na raz. Trzeba popatrzec w dokumentacji

edytowany 1x, ostatnio: fasadin, 2015-01-17 20:04

Pozostało 580 znaków

2015-01-17 20:06
anonymous23456
0

Tylko, że ten sposób bardzo skomplikuje mi kod, bo chciałbym zatrzymać w strumieniu całą reszte znaków po pierwszym ' ' lub '\n' i wczytać to do czegoś innego. Dlaczego moja funkcja nie chce wczytywać znaków spacji ani enter?

Pozostało 580 znaków

2015-01-17 20:10
0

nie za bardzo Cie rozumiem, nie wiem co chcesz osiagnac. Moze ktos inny bedzie w stanie Ci pomoc.
Najpierw chciales czytac wszystko do znakow \n i " " a teraz pytasz sie czemu on Ci tego nie wczytuje ;o
chcesz wczytaj znaki to daj getline i daj znak konca pliku, wtedy wczyta Ci wszystko
To ze kod Ci komplikuje? Tez nie rozumiem.

Moze ktos inny bedzie Cie w stanie zrozumiec.

Pozostało 580 znaków

2015-01-17 20:15
0

użyj cin.get() http://ideone.com/d2u0M2
musisz też obsłużyć przypadek gdy nie będzie co wczytać itp

edytowany 1x, ostatnio: stryku, 2015-01-17 20:18

Pozostało 580 znaków

2015-01-17 20:20
anonymous23456
0

@fasadin : z założenia funkcja wczytuje znaki do napotkania spacji lub entera i dodaje je do string. Ja nie widzę błędu, ale bez wątpienia on jest..

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0