Anim Temat założony przez niniejszego użytkownika |
cin.getline » 2015-11-22 12:58:26 hej :) mam pewne trudności ze zrozumieniem poniższego kodu, a właściwie ze zrozumieniem roli jaką odgrywa cin.getline (). Otóż mam fragment kodu, gdzie po "cin >> t" raz mam cin.getline, a raz tego nie mam. Różnica jest znacząca, gdy chcę policzyć ilość znaków w tablicy S1 i S2. Zawsze myślałem ,że cin.getline jako element strumienia wejściowego "nakazuje" wprowadzenie danych z klawiatury, ale tutaj chyba nie o to chodzi. #include <iostream> #include <cstring>
using namespace std;
#define T_SIZE 1001
char * string_merge( char * S1, char * );
int main() { int t, n; char S1[ T_SIZE ], S2[ T_SIZE ], * S; cin >> t; while( t ) { cin.getline( S1, T_SIZE, ' ' ); cin.getline( S2, T_SIZE ); S = string_merge( S1, S2 ); cout << S << endl; delete[] S; t--; } return 0; }
#include <iostream> #include <cstring>
using namespace std;
#define T_SIZE 1001
char * string_merge( char * S1, char * );
int main() { int t, n; char S1[ T_SIZE ], S2[ T_SIZE ], * S; cin >> t; cin.getline( S1, T_SIZE ); while( t ) { cin.getline( S1, T_SIZE, ' ' ); cin.getline( S2, T_SIZE ); S = string_merge( S1, S2 ); cout << S << endl; delete[] S; t--; } return 0; }
do czego dokładnie służy cin.getline w tym przypadku - po "cin>>t" :) dziękuję za pomoc :) |
|
carlosmay |
» 2015-11-22 13:22:36 cin.getline( S1, T_SIZE );
|
|
Anim Temat założony przez niniejszego użytkownika |
» 2015-11-22 13:30:20 hm, no ok, a w takim razie dlaczego w pętli ,gdzie znów mam do czynienia z cin.getline(); nie wczytuje rozmiaru ? tylko nakazuje mi wprowadzić dane z klawiatury ? jaka jest różnica? |
|
carlosmay |
» 2015-11-22 14:19:51 cin >> t; cin.getline( S1, T_SIZE );
while( t ) { cin.getline( S1, T_SIZE, ' ' ); cin.getline( S2, T_SIZE ); S = string_merge( S1, S2 ); cout << S << endl; delete[] S; t--; }
edit: Jeśli wprowadzisz w pętli z klawiatury: Ala ma kota. to 'Ala' zapisze się do tablicy 'S1', a reszta do tablice 'S2'. |
|
Anim Temat założony przez niniejszego użytkownika |
» 2015-11-22 14:27:51 Super :) zrozumiałem :) dziękuję :) |
|
Monika90 |
» 2015-11-22 14:46:07 Zamiast tego pierwszego cin.getline powinno być cin.ignore(numeric_limits<streamsize>::max(), '\n');, SPOJ używa niewłaściwych funkcji i wprowadza zamieszanie. |
|
Anim Temat założony przez niniejszego użytkownika |
» 2015-11-22 16:45:54 Skąd wiedziałaś, że to SPOJ ;p :D dziękuję :) faktycznie .ignore jest ciekawszy. Tylko, czy nie może zostć tylko cin.ignore()? Bez numeric_limits<streamsize>::max(), '\n' ? |
|
Monika90 |
» 2015-11-23 18:56:20 cin.ignore() pomija jeden znak, cin.ignore(numeric_limits<streamsize>::max(), '\n'); pomija znaki aż do znaku przejścia do nowej linii włącznie. |
|
« 1 » |