Kezdőoldal » Számítástechnika » Programozás » C++-ban a cout paramétereinek...

C++-ban a cout paramétereinek van felső határa?

Figyelt kérdés

2017. aug. 23. 06:43
 1/9 A kérdező kommentje:
És ha igen, akkor mi szabja meg?
2017. aug. 23. 06:44
 2/9 anonim ***** válasza:
Tudtommal legfeljebb 1024 lehet, de egyes fordítók többet is elfogadhatnak.
2017. aug. 23. 07:36
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
A hasonló dolgok a szabványban vannak leírva.Bár abban nem találtam.
2017. aug. 23. 07:37
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
100%
A cout nem egy függvény, tehát eleve nincsenek paraméterei. A cout egy stream. Legfeljebb olyan történhetne, hogy a cout egyszer csak nem bírja tovább bufferrel, de mivel saját magának manageli a bufferelést, ez sem nagyon tud megtörténni.
2017. aug. 23. 10:27
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:

Jó kérdés.

Csináltam egy kis tesztprogramot (cout_initial.cpp):

[link]

amihez kreáltam egy kis Bash shellszkriptet:

[link]

és elindítottam.


65536 karakternél még szépen lefordult (i5 4570 procival, 16 GiB RAM-mal, xUbuntu 16.04-es rendszeren a C++-fordító 9:12 (perc:másodperc) ideig közel 100%-on terhelte a processzort, elfogyasztott 3674168 kiB RAM-ot), 131072 már nem tetszett neki:

g++: internal compiler error: Szegmentálási hiba (program cc1plus)

Please submit a full bug report,

with preprocessed source if appropriate.

See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.

Command exited with non-zero status 4

2017. aug. 23. 12:42
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

Hozzátenném: az általam tesztelt C++ fordító:

$ g++ --version

g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

2017. aug. 23. 12:51
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:
Akkor a kiírandó elemek minek a paraméterei, ha nem a coutnak? A << operátornak?
2017. aug. 24. 21:15
 8/9 anonim ***** válasza:

Igen. Az, hogy std::cout<<"Valami" azt úgy képzeld el, mintha a << operatort hívnád meg az std::cout-al, és a "Valami" stringgel paraméterként. Az általános deklarációja így néz ki:


std::ostream& operator<<(std::ostream& os, const T& obj)


Az, hogy egymás után több ilyet is teszel úgy néz ki, hogy az operator visszetér a stream-el, amire írtál, és az lesz a következő hívás baloldali operandusa.


std::cout<<foo<<bar úgy képzelendő el, hogy:

( std::cout<<foo )<<bar


az std::cout<<foo ráírja a foo értékét a cout streamre, és visszatér a streammel, így a következő hívás bal operandusa ismét az std::cout lesz, amire már rá van írva a foo értéke.

2017. aug. 24. 22:46
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:
operator<<(std::cout, "Hello World!");
2017. aug. 26. 04:22
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!