Qabrix Temat założony przez niniejszego użytkownika  | 
» 2017-03-30 14:51:56 j23, niee, nie do końca :/ w sumie nie do końca jasno teraz się wyraziłem, chciałbym żeby pierwszy element tablicy był jednym słowem, a wszystko po spacji drugim. W sumie ten zapis spełnia role: for( int i = 0; i < 6; i++ ) {     if( i % 2 == 0 ) {         cout << "Podaj nazwe i model samochodu nr " <<( i / 2 + 1 ) << ": ";         cin >> nazwa[ i ];     }          else cin.get( nazwa[ i ], rozmiar );      }
  Jednak właśnie, jeżeli ktoś postąpi wbrew intencjom programisty i wpisze tylko jeden wyraz i nic po spacji, to program się buguje. I to chciałbym własnie zabezpieczyć. A karambaHZP, niestety Twoje rozwiązanie nie jest adekwatne do pytania :/  | 
 | 
j23  | 
» 2017-03-30 18:49:45 No to zrób drobną modyfikację tego, co podałem:  getline( iss >> tab[ 0 ], tab[ 1 ] ); Możesz po  getline dodać taki kod: auto it = tab[ 1 ].begin(); while( it != tab[ 1 ].end() && isspace( * it ) ) ++it;
  tab[ 1 ].erase( tab[ 1 ].begin(), it );
  żeby usunąć spacje na początku drugiego stringa.  | 
 | 
Qabrix Temat założony przez niniejszego użytkownika  | 
» 2017-03-30 23:22:29 Dzięki za odpowiedź (po raz kolejny ;)), ale jeszcze tylko ostatnie pytanie. Napisałem taki oto kod, aby sprawdzić, czy to rozwiązanie działa: #include<cstdlib> #include <iostream> #include <conio.h> #include<string> #include <cstdio> #include <cstring> int main() {     using namespace std;          char tab[ 2 ][ 50 ];     string s;          getline( iss >> tab[ 0 ], tab[ 1 ] );     iss >> tab[ 0 ] >> tab[ 1 ];          cout << tab[ 0 ] << endl << tab[ 1 ]; } Ale niestety, podczas kompilacji otrzymuje błąd: error: 'iss' was not declared in this scope Gdybyś jeszcze tylko mógł mi to wyjaśnić, byłbym ogromnie wdzięczny.  | 
 | 
karambaHZP  | 
» 2017-03-31 00:28:18 istringstream iss( s );  ?  | 
 | 
j23  | 
» 2017-03-31 10:34:43 W całości: string tab[ 2 ]; string s;
  getline( cin, s ); istringstream iss( s ); getline( iss >> tab[ 0 ], tab[ 1 ] );
  auto it = tab[ 1 ].begin(); while( it != tab[ 1 ].end() && isspace( * it ) ) ++it;
  tab[ 1 ].erase( tab[ 1 ].begin(), it );
   | 
 | 
Qabrix Temat założony przez niniejszego użytkownika  | 
» 2017-03-31 18:08:14 Dostaje takie ostrzeżenia i błędy: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat] error: 'it' does not name a type error: 'it' was not declared in this scope #include <iostream> #include <cstdio> #include <string> #include <sstream>
 
  using namespace std;
  int main() {          using namespace std;     string tab[ 2 ];     string s;          getline( cin, s );     istringstream iss( s );     getline( iss >> tab[ 0 ], tab[ 1 ] );          auto it = tab[ 1 ].begin();     while( it != tab[ 1 ].end() && isspace( * it ) ) ++it;          tab[ 1 ].erase( tab[ 1 ].begin(), it );     return 0; }
   | 
 | 
j23  | 
» 2017-03-31 18:34:14 Włącz w opcjach projektu obsługę standardu C++11 (lub wyżej). Ewentualnie zamiast auto daj string::iterator.   | 
 | 
Qabrix Temat założony przez niniejszego użytkownika  | 
» 2017-03-31 20:13:48 Dzięki j23, wszystko teraz działa tak jak powinno :)  | 
 | 
| 1 « 2 »  3 |