cin string i spacja
Ostatnio zmodyfikowano 2012-09-21 22:55
diego997 Temat założony przez niniejszego użytkownika |
cin string i spacja » 2012-09-21 14:46:33 Cześć mam problem bo niby cin ignoruje białe znaki a jednak tylko przy spacji wywala error.
Chciałbym po prostu móc do stringa wprowadzać dane razem ze spacjami. Kiedyś to robiłem w ten sposób że pobierałem pojedyńczo znaki i sprawdzałem czy nie został wciśniety enter, ale chyba to nie był najlepszy pomysł. Możecie coś poradzić :) ?
P.S przy getline(cin,string); wywala błąd |
|
cyklopek11 |
» 2012-09-21 14:55:28 Masz coś nie tak z getline(cin,string). Domyślnie wczytuje ze strumienia do stringu aż napotka znak końca linii (albo coś innego co podasz w trzecim parametrze) który wyjmuje ze strumienia i wyrzuca. Tak więc: string zdanie; getline( cin, zdanie );
cout << zdanie;
Na 100% musi ci wczytać "Ala ma kota" ze spacjami ! |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-09-21 15:11:02 wyskakuje mi error z Abort retry ignore a w nim cos string subscript out of range |
|
wojownik266 |
» 2012-09-21 15:49:42 Masz jeszcze na dokładkę dwa sposoby wczytywania tekstu ze spacjami do tablicy i stringa. #include <iostream> #include <string> using namespace std;
int main() { string line; cout << "Podaj tekst:"; while( getline( cin, line ) ) { cout << line << endl; break; } char tab[ 100 ] = { '0' }; cout << "Podaj tekst:"; while( cin.getline( tab, 100 ) ) { cout << tab << endl; } cin.get(); return 0; }
|
|
RazzorFlame |
» 2012-09-21 16:02:37 Po co while? Poprostu: #include <iostream> #include <string>
using namespace std;
int main() { string linia; cout << "Podaj linie tekstu\n"; getline( cin, linia ); cout << linia << endl; return 0; }
@wojownik266 jest sposobów bardzo dużo ale najlatwiejszy to chyba przez funkcje getline. Przecież można to zrobić też za pomocą getch(). Chodzby w taki sposób: char * PobierzLinie() { string pomocny; char znak = 0; while( znak != 32 ) { znak = getch(); pomocny += znak; } return( char * )( pomocny.c_str() ); }
W podanym powyżej sposobie nie da sie kasować znaków ale nie jest to problem :d |
|
wojownik266 |
» 2012-09-21 16:07:56 Masz rację, sposobów jest wiele a pętla po to aby było ciekawiej. (Może pogadamy dzisiaj na gg?) |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2012-09-21 16:15:14 Wiecie co stworzylem nowy projekt skompilowałem #include <string> #include <iostream>
using namespace std;
int main() { string text; getline( cin, text ); }
I się skompilowało bezbłędnie dziwne |
|
wojownik266 |
» 2012-09-21 16:42:29 Nic w tym dziwnego. Tak ma być!!! |
|
« 1 » 2 |