Cin.getline – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Cin.getline – C / C++ – Fórum – Programujte.comCin.getline – C / C++ – Fórum – Programujte.com

 

RybaRak-WM0
Newbie
19. 7. 2008   #1
-
0
-

ahojte. zas sem začal programovat a nějak mi nefunguje cin.getline
mám:

#include <iostream>

using namespace std;
int main()
{
char jmeno[10];
cin.getline(jmeno,10);
cout << jmeno;
cin.get();
return 0;
}
a podle třetího mistrovství v c++ to má načíst těch 9 nebo 10 to je jedno znaků a ukončit vstup, ale mě tam jde psát dál a když dám entr tak se to vypne cinget necinget. to funguje jenom když dám mín znaků.

Nahlásit jako SPAM
IP: 85.92.34.–
Jsem RybaRak-WM, to WM znamená "vládce všech moří"
bukaj0
Věrný člen
19. 7. 2008   #2
-
0
-

RybaRak-WM
a nějak mi nefunguje cin.getline ... a podle třetího mistrovství v c++ to má načíst těch 9 nebo 10 to je jedno znaků a ukončit vstup, ale mě tam jde psát dál
Nejspíš jsi pochopil špatně, co se v Mistrovství píše. istream::getline(char *s, streamsize n) načte se streamu maximálně n - 1 znaků, které uloží na adresu s, a přidá nakonec '\0' (nulový znak). Pokud při čtení naraz na znak konce řádku (\n), čtení ukončí, i když není přečteno n - 1 znaků. Jednoduše řečeno to přečte maximálně n - 1 znaků z jednoho řádku, pokud je řádek kratší než n - 1, přečte ho to celý.

Stream se ale nezavře po zavolání getline(). Je dále otevřen a může z něj probíhat čtení. Pokud zadáš znaků víc, zůstanou ve streamu a odchytí je fce get().

PS. Mimochodem, používání get() na to, aby ti program zůstal viset v konzoli a čekal na nějaký znak (který jak vidíš může v cin uvíznout z předchozího čtení), se mi zdá jako prsárna. Ale jak vidím, je to široce používané.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
RybaRak-WM0
Newbie
19. 7. 2008   #3
-
0
-

takže se tam ukončí vstup jenom do toho pole. a co teda můžu použít pro spolknutí těch přebývajících znaků? abych pak mohl teoreticky použít cin.get() pro entr i když je to prasárna

Nahlásit jako SPAM
IP: 85.92.34.–
Jsem RybaRak-WM, to WM znamená "vládce všech moří"
RybaRak-WM0
Newbie
19. 7. 2008   #4
-
0
-

jo na konci je tam napsáno, že když napíšu vstup delší, že to jsou komplikace, které se proberou v jiných lekcích, takže mi asi ještě není souzeno to uplně pochopit. tak já jedu dál

Nahlásit jako SPAM
IP: 85.92.34.–
Jsem RybaRak-WM, to WM znamená "vládce všech moří"
darthdeus0
Stálý člen
20. 7. 2008   #5
-
0
-

Aby se program nevypnul se dá jednoduše ošetřit pomocí

system("PAUSE");

Nahlásit jako SPAM
IP: 85.70.184.–
(1..100).inject(&:+) komu se to nelíbí, ať mi klobouk políbí :P
czbero0
Stálý člen
21. 7. 2008   #6
-
0
-

To darthdeus : a nebo, jak je v knize Mistrovství v C++ (3. vydání) popisováno, přidat další cin.get();.

Nahlásit jako SPAM
IP: 62.240.178.–
http://moddb.com/mods/police-brutality/
gogulux0
Newbie
21. 7. 2008   #7
-
0
-

Taky se tam neco pise o prenositelnosti.

Nahlásit jako SPAM
IP: 217.112.163.–
Earl Cash0
Věrný člen
21. 7. 2008   #8
-
0
-

To gogulux : to je pravda....pro windows je pouzitelne volani "pause", pro linux napriklad "sleep x", kde x je pocet sekund na jak dlouho ma "usnout"....ale neznam nikoho kdo to pouziva, protoze vetsinou spousti programy primo z shellu.....

Nahlásit jako SPAM
IP: 193.85.184.–
Oh my goodness, shut me down! Machines making machines. How perverse. (C-3PO)
darthdeus0
Stálý člen
21. 7. 2008   #9
-
0
-

To gogulux : tak k té přenositelnosti



#ifdef WIN32
system("PAUSE");
#endif

a je to :P protože v linuxu to stejně budete pouštět přímo z terminálu takže nebude vadit když se to hned zavře

Nahlásit jako SPAM
IP: 85.70.184.–
(1..100).inject(&:+) komu se to nelíbí, ať mi klobouk políbí :P
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Cin.getline — založil Hlavinka

Cin.getline — založil Avidius

Cin.getline — založil tupec

Cin.get() cin.line() — založil H3ll

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý