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

cin string i spacja

Ostatnio zmodyfikowano 2012-09-21 22:55
Autor Wiadomość
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
P-65332
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:
C/C++
string zdanie;
getline( cin, zdanie );

// na klawiaturze "Ala ma kota"[enter]

cout << zdanie;

Na 100% musi ci wczytać "Ala ma kota" ze spacjami !
P-65334
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
P-65335
wojownik266
» 2012-09-21 15:49:42
Masz jeszcze na dokładkę dwa sposoby wczytywania tekstu ze spacjami do tablicy i stringa.

C/C++
#include <iostream>
#include <string>
using namespace std;

int main()
{
    //Sposób pierwszy
    string line;
    cout << "Podaj tekst:";
    while( getline( cin, line ) )
    {
        cout << line << endl;
        break;
    }
    //Sposób drugi
    char tab[ 100 ] = { '0' };
    cout << "Podaj tekst:";
    while( cin.getline( tab, 100 ) )
    {
        cout << tab << endl;
    }
    cin.get();
    return 0;
}
P-65336
RazzorFlame
» 2012-09-21 16:02:37
Po co while?
Poprostu:
C/C++
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string linia;
    cout << "Podaj linie tekstu\n";
    getline( cin, linia );
    cout << linia << endl;
    //ew. zatrzymaj program
    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:
C/C++
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
P-65337
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?)
P-65338
diego997
Temat założony przez niniejszego użytkownika
» 2012-09-21 16:15:14
Wiecie co stworzylem nowy projekt skompilowałem
C/C++
#include <string>
#include <iostream>

using namespace std;

int main()
{
    string text;
    getline( cin, text );
}

I się skompilowało bezbłędnie dziwne
P-65339
wojownik266
» 2012-09-21 16:42:29
Nic w tym dziwnego. Tak ma być!!!
P-65341
« 1 » 2
  Strona 1 z 2 Następna strona