Czytanie string i int z jednej linii
Ostatnio zmodyfikowano 2016-02-23 16:22
mrci Temat założony przez niniejszego użytkownika |
Czytanie string i int z jednej linii » 2016-02-23 16:03:13 Witam!
Probuje rozwiązać jedno z zadań na SPOJ'u (http://pl.spoj.com/problems/HILLS2/) i mam problem z czytaniem linii odpowiedzialnej za wywołanie komedy(PREPARE, MOVE, TURN).
string nazwa; int wartosc;
cin>>nazwa>>wartosc;
if (nazwa=="MOVE") obiekt.move(wartosc); else if (name=="TURN") obiekt.turn(wartosc); else if (name=="PREPARE") obiekt.prepare();
Powyższy kawałek kodu byłby idealny, lecz komenda PREPARE jest wywoływana bez wartości, wiec jeśli chce zakończyć linie to muszę podać PREPARE 0, co skutkuje błędną odpowiedzią. Drugi sposób:
string komenda; string nazwa; int wartosc;
getline(cin,komenda); istringstream iss(komenda); iss>>nazwa>>wartosc;
if (name=="MOVE") obiekt.move(value); else if (name=="TURN") obiekt.turn(value); else if (name=="PREPARE") obiekt.prepare();
Drugi sposób jaki wymyśliłem jest w 100% sprawny, lecz platforma SPOJ zwraca informacje przekroczono limit czasu :( Z góry dzięki za jakieś cenne wskazówki. |
|
Gibas11 |
» 2016-02-23 16:06:18 Wczytuj drugą wartość tylko jeżeli nazwa != prepare. cin >> nazwa; if( nazwa != "PREPARE" ) cin >> wartosc;
|
|
mrci Temat założony przez niniejszego użytkownika |
» 2016-02-23 16:12:05 nazwa i wartosc muszą być wczytane w jednej lini niestety :( |
|
Gibas11 |
» 2016-02-23 16:17:14 I? = cin >> nazwa; cin >> wartosc;
EDIT: Operator >> zwraca w tym wypadku referencję na cin i zdziwiłbym się gdyby dwa podane przeze mnie kawałki kodu zostały skompilowane w inny sposób. |
|
mrci Temat założony przez niniejszego użytkownika |
» 2016-02-23 16:22:29 Wielkie dzięki! Nie wiedziałem tego. |
|
« 1 » |