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

Problem z funkcją getline()

Ostatnio zmodyfikowano 2014-09-02 11:17
Autor Wiadomość
askenazy
Temat założony przez niniejszego użytkownika
Problem z funkcją getline()
» 2014-09-01 23:44:06
Proszę o pomoc. Już od godziny się męcze z dość irytującym problemem dotyczącym funkcji getline().
Programik jest banalny (w sumie jest wstępem do pewnego zadania ze spoja)
C/C++
#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;
string zdanie;
short alfabet[ 52 ];
int N;
int main()
{
    for( int i = 0; i < 52; i++ )
    {
        alfabet[ i ] = 0;
    }
   
    cin >> N;
    for( int i = 1; i <= N; i++ )
    {
        cin.ignore();
        getline( cin, zdanie );
        for( unsigned int j = 0; j < zdanie.length(); j++ )
        {
            int k = zdanie[ j ];
            if(( k >= 97 ) ||( k <= 122 ) ) { k -= 97; alfabet[ k ] += 1; }
            else if(( k >= 65 ) ||( k <= 90 ) ) { k -= 65; k += 26; alfabet[ k ] += 1; }
        }
    }
   
    for( int i = 0; i < 52; i++ )
    {
        cout << alfabet[ i ] << endl;
    }
    return 0;
}

Program się poprawnie kompiluje bez warningów, ale są problemy gdy chce wczytywać długie linie:
Dla długich napisów program po prostu przestaje działać :/ i automatycznie się zamyka.
W czym tu jest problem?
//-----------------------------------------------------------------------------------------------------------
Hmm...doszedłem do tego, ze cos jest nie tak ze spacjami....jesli zdanie zawiera choc jedna spacje wywala błąd, a jak jest dowolnie długie,ale bez spacji to wszystko jest ok.
//-----------------------------------------------------------------------------------------------------------
Nie mam zielonego pojecia co tu jest nie tak...zrobilem kilka testow i stworzylem sobie kilka stringow z duza iloscia spacji.
zarówno
cout<<mojnapis
 wyswietla napis razem ze spacjami jak i
mojnapis.lenght()
 wyswietla prawidlowa dlugosc napisu, liczac tez spacje. Nie wiem skąd ten blad.


P-116548
pekfos
» 2014-09-02 10:49:45
C/C++
if(( k >= 97 ) ||( k <= 122 ) )
&&.
P-116554
askenazy
Temat założony przez niniejszego użytkownika
» 2014-09-02 11:17:15
Ahhh!! No pewnie :) Dzięki :)
P-116555
« 1 »
  Strona 1 z 1