Problem z funkcją getline()
Ostatnio zmodyfikowano 2014-09-02 11:17
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) #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. |
|
pekfos |
» 2014-09-02 10:49:45 if(( k >= 97 ) ||( k <= 122 ) )
| &&. |
|
askenazy Temat założony przez niniejszego użytkownika |
» 2014-09-02 11:17:15 Ahhh!! No pewnie :) Dzięki :) |
|
« 1 » |