Nauka c++ - wyrażenie std::cout - zapis


(Rosiak112) #1

w kursie http://cpp0x.pl/kursy/Kurs-C++/1#/kursy/?nro=12

wszystko idzie mi ok,ale nie stosuje sie do konca do instrukcji kursu, gdyż wydaje mi się zbędne, takie utrudnianie,konkretne przykłady to np.

#include 

int main()

{

    int a;

    float b;

    std::cout << "Podaj liczbe calkowita: ";

    std::cin >> a;

    std::cout << "Podaj liczbe rzeczywista: ";

    std::cin >> b;

    std::cout << "Liczba a = " << a << std::endl;

    std::cout << "Liczba b = " << b << std::endl;

    return 0;

}

Ja zrobiłem to tak:

#include 

int main()

{

int a;

float b;

std::cout << "Podaj liczbe calkowita: ";

    std::cin >> a;

    std::cout << "Podaj liczbe rzeczywista: ";

    std::cin >> b;

    std::cout << "Liczba a = " ;

    std::cout << a;

    std::cout << "Liczba b = ";

    std::cout << b;

    return 0;

}

Wszystko jest ok,dla mnie to jest łatwiej tak to zapisać jak ja to zapisałem,może robie problemy,ale to jest tylko przykład takiego zapisu, taki zapis jak przedstawiłem jest dla mnie dużo łatwiejszy, a w bardziej skomplikowanych funkcjach było by mi po prostu łatwiej zapisać tę moją wersję.

No ale czy później nie będe miał problemów żadnych z pomijaniem takiego zapisu ?


(Blapiter) #2

Generalnie std::cout jest buforowany dlatego zbiera najpierw wszystko zanim to pokaże na ekran, Twój drugi sposób jest też dobry tylko bardziej obciąża system bo std::cout musi najpierw pokazać co już zebrał potem się "wyczyścić" a potem znowu zebrać i pokazać, generalnie dla dzisiejszych komputerów to nie ma znaczenia bo to mrugnięcie oka ale lepiej by było stosować taki zapis, oczywiście std::endl to nowa linia i nie trzeba jej używać jak się nie chce :slight_smile: :

#include 

int main()

{

int a;

float b;

std::cout << "Podaj liczbe calkowita: ";

    std::cin >> a;

    std::cout << "Podaj liczbe rzeczywista: ";

    std::cin >> b;

    std::cout << "Liczba a = "

                  << a 

                  << "Liczba b = "

                  << b 

                  << std::endl;

    return 0;

}

(Darkvifon) #3

Nie jestem pewny jak będzie z wydajnością, ale poza drobnymi różnicami w tekście wynikowym, efekt powinien być taki sam. Różnice, o których mówię, to brak znaku nowej linii w kilku miejscach. Jeśli Ci to coś ułatwi, to możesz go wysyłać jako znak '\n' (oddzielnie lub jako część stringa). Niektórzy tego nie zalecają, ale sporo Ci ułatwi dodanie "using namespace std;" przed mainem - będziesz mógł pominąć wszystkie "std::".


(Zulowski) #4

Imho nie będziesz wstanie napisać na tyle rozbudowanego programu w C++ w najbliższych 5 latach :smiley:

i jak ktoś już podpowiedział, stosuj taki zapis:

#include 

using namespace std;

int main()

{

  int a;

  float b;

  cout << "Podaj liczbe calkowita: ";

  cin >> a;

//....

}

(Rosiak112) #5

blapiter no twój zapis jest ok, nie spojrzałem na niego z tej strony.

Dzięki za wyjaśnienie.

-- Dodane 06.02.2011 (N) 18:47 --

a zapisałem teraz tak:

#include 

int main()

{

int a;

float b;

std::cout << "Podaj liczbe calkowita : ";

std::cin >> a;

std::cout << "Podaj liczbe rzeczywista : ";

std::cin >> b;

std:cout << "liczba calkowita : \n" << a;

std:cout << "\nliczba rzeczywista : \n" << b;

return 0;

}

Ten zapis jest ok ?


([alex]) #6

Owszem ok. Ale lepiej stosować endl zamiast \n.

std:cout << "liczba calkowita : " << std::endl << a;