Výsledky 1 až 15 z 15

Téma: [C] Vlozeni retezce - hlaska

  1. #1

    Standardní [C] Vlozeni retezce - hlaska

    potrebuju radu, vkladam do promenne string z klavesnice pismena a cisla, jak mam udelat podminku if aby, po odentrovani "niceho" to vypsalo hlasku, ze mam neco napsat.

    string a
    cin >> a;
    if( a == "" ) {
    cout << "Musis neco zadat." << endl;
    return;
    }

    takhle mi to nevachci

    Diky za rady
    [Project Morpheus] Intel Core2Duo E8200@3,9GHz, 4096MB DDR2, P35-DS3P, Radeon HD2600Pro 512MB, 1,5TB+0,75TB+2TB, Toshiba DVD-Rom 16x,48x, LG DVD-smazirna, BenQ LCD 22", HP Deskjet 959c, LaserMouse 6000, AC 550W
    [NTB] Corei5 2,6GHz, 6GB DDR3, nVidia Quattro 512MB, 250GB+300GB, LCD 14,1", 720p projector

  2. #2

    Standardní Re: [C] Vlozeni retezce - hlaska

    A nebude v a znak novýho řádku? že bys to porovnával s chr(13), nebo bych se zkusil juknout, jak velkej string vrátí sizeOf(a).

    EDIT:
    Tak jsem si to vyzkoušel a dělá mi to, že to enter nebere jako znak, ale příkaz, takže to pořád očekává vstup... Jsem víc zvyklej na C než na C++, tak bych to asi udělal přes scanf nebo gets...
    Naposledy upravil Smitka; 11.04.2007 v 15:51.

  3. #3

    Standardní Re: [C] Vlozeni retezce - hlaska

    operator>> zrovna nechava specialni znaky v bufferu, takze v tom stringu fakt nic nebude (navic kvuli tomuhle, by jsi mel ten buffer vyprazdnovat pres cin.get() )

    ohleden toho prazdneho stringu
    testuj to na
    if(a.size()==0)

    EDIT:
    na tyhle veci je nej http://www.cppreference.com/
    Naposledy upravil mike.pr; 11.04.2007 v 15:52.

  4. #4

    Standardní Re: [C] Vlozeni retezce - hlaska

    tak to asi jednoduse nepujde
    [Project Morpheus] Intel Core2Duo E8200@3,9GHz, 4096MB DDR2, P35-DS3P, Radeon HD2600Pro 512MB, 1,5TB+0,75TB+2TB, Toshiba DVD-Rom 16x,48x, LG DVD-smazirna, BenQ LCD 22", HP Deskjet 959c, LaserMouse 6000, AC 550W
    [NTB] Corei5 2,6GHz, 6GB DDR3, nVidia Quattro 512MB, 250GB+300GB, LCD 14,1", 720p projector

  5. #5

    Standardní Re: [C] Vlozeni retezce - hlaska

    A takto?
    Kód:
    #include <iostream>
    using namespace std;
    
    int main() {
    string a;
    while(1){
    getline(cin, a);
    if (a.size()!=0) break;
    cout << "Musis neco zadat." << endl;
    } 
    }

  6. #6

    Standardní Re: [C] Vlozeni retezce - hlaska

    excelentni, presne tohle jsem potreboval K+
    [Project Morpheus] Intel Core2Duo E8200@3,9GHz, 4096MB DDR2, P35-DS3P, Radeon HD2600Pro 512MB, 1,5TB+0,75TB+2TB, Toshiba DVD-Rom 16x,48x, LG DVD-smazirna, BenQ LCD 22", HP Deskjet 959c, LaserMouse 6000, AC 550W
    [NTB] Corei5 2,6GHz, 6GB DDR3, nVidia Quattro 512MB, 250GB+300GB, LCD 14,1", 720p projector

  7. #7

    Standardní Re: [C] Vlozeni retezce - hlaska

    mno tak jsem to uspechal, kdyz to vlozim do jiz hotoveho programu, tak mi to dela kraviny, ihned to totiz vypise tu chybovou hlasku, pak to funguje jak ma, ale tu hlasku to vypisuje aniz bych neco delal.
    [Project Morpheus] Intel Core2Duo E8200@3,9GHz, 4096MB DDR2, P35-DS3P, Radeon HD2600Pro 512MB, 1,5TB+0,75TB+2TB, Toshiba DVD-Rom 16x,48x, LG DVD-smazirna, BenQ LCD 22", HP Deskjet 959c, LaserMouse 6000, AC 550W
    [NTB] Corei5 2,6GHz, 6GB DDR3, nVidia Quattro 512MB, 250GB+300GB, LCD 14,1", 720p projector

  8. #8

    Standardní Re: [C] Vlozeni retezce - hlaska

    Dokonce to funguje i takto:
    int main(void) {
    string cislo;
    cout << "Neco napis: ";

    getline(cin, cislo);
    if (cislo.size() ==0){printf("Napis neco!");}

    cout << cislo;
    getch();
    getch();
    }

    ale v tom hotovem programu to proste korektni neni ani v tomto pripade, jak kdyby to necekalo na to az tam neco zadam a hned to vypisuje chybu
    [Project Morpheus] Intel Core2Duo E8200@3,9GHz, 4096MB DDR2, P35-DS3P, Radeon HD2600Pro 512MB, 1,5TB+0,75TB+2TB, Toshiba DVD-Rom 16x,48x, LG DVD-smazirna, BenQ LCD 22", HP Deskjet 959c, LaserMouse 6000, AC 550W
    [NTB] Corei5 2,6GHz, 6GB DDR3, nVidia Quattro 512MB, 250GB+300GB, LCD 14,1", 720p projector

  9. #9

    Standardní Re: [C] Vlozeni retezce - hlaska

    Možná by pomohlo nevinné else, možná... Zkus to takhle, připadně sem hodit kus kódu, jak to tam blbne...
    Kód:
    #include <iostream>
    
    using namespace std;
    
    int main() {
    string a;
    while(1){
    cout << a.size() << endl;
    getline(cin, a);
    if (a.size()!=0) break;
    else
    cout << "Musis neco zadat." << endl;
    } 
    }

  10. #10

    Standardní Re: [C] Vlozeni retezce - hlaska

    ani tak to nejde korektne:
    Ten program je dosti obsahly, tady je ukazka:

    void cmdNovyZaznam()
    {
    string cislo, nazev, mnozstvi, dp, dv, vydano;

    cout << "Novy zaznam:" << endl;

    cout << "Cislo polozky: ";
    while(1){
    getline(cin, cislo);
    if (cislo.size()!=0) break;
    else
    cout << "Musis neco zadat." << endl;
    }

    cout << "Nazev polozky: ";
    cin >> nazev;

    cout << "Mnozstvi (ks/kg): ";
    cin >> mnozstvi;

    cout << "Datum prijmu (dd.mm.yy): ";
    cin >> dp;

    cout << "Datum vydeje (dd.mm.yy): ";
    cin >> dv;

    cout << "Vydano komu: ";
    cin >> vydano;

    getch();
    }
    [Project Morpheus] Intel Core2Duo E8200@3,9GHz, 4096MB DDR2, P35-DS3P, Radeon HD2600Pro 512MB, 1,5TB+0,75TB+2TB, Toshiba DVD-Rom 16x,48x, LG DVD-smazirna, BenQ LCD 22", HP Deskjet 959c, LaserMouse 6000, AC 550W
    [NTB] Corei5 2,6GHz, 6GB DDR3, nVidia Quattro 512MB, 250GB+300GB, LCD 14,1", 720p projector

  11. #11

    Standardní Re: [C] Vlozeni retezce - hlaska

    Je potřeba vyhodit obsah vstupního bufferu, před dalším použitím, takže na začátek tý funkce hodit cin.ignore(); a mělo by to jet


    [OT]
    sem senior member - stáří si nevybírá
    [/OT]
    Naposledy upravil Smitka; 12.04.2007 v 11:21.

  12. #12
    Senior Member
    Založen
    22.07.2003
    Bydliště
    Ostrava - Homeless putující světem
    Příspěvky
    731
    Vliv
    276

    Standardní Re: [C] Vlozeni retezce - hlaska

    cin.ignore - proste vyhodit predchozi jako cout.flush

    a pak testovat if(cin)
    Autor tohoto příspěvku je zpráskaná LAMA. Absolvoval 6 tříd ZŠ. Proto berte obsah příspěvku s rezervou.

  13. #13

    Standardní Re: [C] Vlozeni retezce - hlaska

    Diky panove!
    [Project Morpheus] Intel Core2Duo E8200@3,9GHz, 4096MB DDR2, P35-DS3P, Radeon HD2600Pro 512MB, 1,5TB+0,75TB+2TB, Toshiba DVD-Rom 16x,48x, LG DVD-smazirna, BenQ LCD 22", HP Deskjet 959c, LaserMouse 6000, AC 550W
    [NTB] Corei5 2,6GHz, 6GB DDR3, nVidia Quattro 512MB, 250GB+300GB, LCD 14,1", 720p projector

  14. #14
    Senior Member
    Založen
    22.07.2003
    Bydliště
    Ostrava - Homeless putující světem
    Příspěvky
    731
    Vliv
    276

    Standardní Re: [C] Vlozeni retezce - hlaska

    mala poznamka -- C++ je rigorozne typovy jazyk ! Ten jazyk, ktery pouzivas neni C nybrz C++ jelikoz pouzivas STL a ne C runtime.

    takze pokud nekde mas

    #ifndef _cplusplus
    .....

    -tak to neprelozis.

    Ten getch(); na konci ti má sloužit k čemu přesně ? Opravdu chceš ať se zmáčkne pro pokračování jakákoliv klávesa ?
    Naposledy upravil Kon; 13.04.2007 v 09:50.
    Autor tohoto příspěvku je zpráskaná LAMA. Absolvoval 6 tříd ZŠ. Proto berte obsah příspěvku s rezervou.

  15. #15

    Standardní Re: [C] Vlozeni retezce - hlaska

    Citace Původně odeslal Kon Zobrazit příspěvek
    Ten getch(); na konci ti má sloužit k čemu přesně ? Opravdu chceš ať se zmáčkne pro pokračování jakákoliv klávesa ?
    Jo jo getch(); to je ma oblibena fce Jinak jestli je to C nebo C++ je mi vcelku jedno, hlavne ze to jede. Nejak nas to neucili co je co, akorat vim, ze string co je zde pouzit je z C++.
    [Project Morpheus] Intel Core2Duo E8200@3,9GHz, 4096MB DDR2, P35-DS3P, Radeon HD2600Pro 512MB, 1,5TB+0,75TB+2TB, Toshiba DVD-Rom 16x,48x, LG DVD-smazirna, BenQ LCD 22", HP Deskjet 959c, LaserMouse 6000, AC 550W
    [NTB] Corei5 2,6GHz, 6GB DDR3, nVidia Quattro 512MB, 250GB+300GB, LCD 14,1", 720p projector

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •