C++ undran om std::cout,cin,endl

Permalänk
Medlem

C++ undran om std::cout,cin,endl

En del här på forumet skriver:

#include <iostream>

using namespaces std;

och alltså "öppnar" allt innehåll i iostream

andra skriver std::cout, std::cin std::endl

vilket iofs är helt okey, om man inte vill "öppna" allt i iostream
och ni som använder det menar att det är bättre. Vilket kan vara sant
i mer avancerade program med fler funktioner.

Men då det blir segt att skriva std:: före var cout,cin och
endl, vilket det kan bli många av i ett program så undrar
jag varför ni väljer att skriva ut det på var plats istället för:

using std::cout
using std::cin
using std::endl

som alltså öppnar upp bara dessa funktioner, inte alla som using namespaces std gör.

bara nyfiken, så vitt jag vet gör det ingen skillnad, men tar mindre plats...

Permalänk
Medlem

jag avänder using namespace std; av ren lathet går ju snabbas att skriva...

Permalänk
Medlem

Jag med, kommer göra det tills jag skapar program där jag inte "kan" öppna alla
funktioner i iostream

Men jag undrar över dom som tar sig besväret att skriva std:: för var rad, även i
program där det inte finns någon anledning att inte öppna hela namespacet std
istället för using std::cout
och efter det kunna skriva cout som vanligt...

Permalänk
Medlem

Jag har väl disciplin. Men i ett kort program blir det ju jobbigare att skriva ut dina tre rader än att skriva ut std:: på de få ställen det behövs.

Visa signatur

:€

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av eighty
Jag har väl disciplin. Men i ett kort program blir det ju jobbigare att skriva ut dina tre rader än att skriva ut std:: på de få ställen det behövs.

Då ska det vara ett mycket kort program...

Permalänk
Medlem

Påpekande, det hör till god design av bibliotek att inte tvinga på användaren namespaces. Så om man skriver ett bibliotek bör man inte öppna externa namespaces (t.ex. std::) i en header det är tänkt att användaren ska inkludera. I cpp-filerna är det dock fritt fram eftersom namespacet endast stannar öppet innom den filen.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Inaktiv

Själv skriver jag in std:: på alla ställen där det behövs. Vet inte varför egentligen, sitter väl fast i fingrarna antar jag. Allt förutom string (dvs map, list, etc) fixar jag en typedef för så där spelar det väl ingen roll. Skriver dock alltid using namespace för namespaces som jag har gjort själv.

Permalänk
Medlem

drar ett par exempel:

globalt, hela namespacet funkar i hela programet

#include <iostream> using namespaces std; main() {}

eller:

globalt, cout,cin,endl funkar i hela programet

#include <iostream> using std::cout; using std::cin; using std::endl; main() {}

eller:

lokalt, cout,cin och endl funkar bara i main()

#include <iostream> main() {} using std::cout; using std::cin; using std::endl;

eller:

lokat, hela namesapcet std funkar i main

#include <iostream> main() {} using namespace std;

Det anses väl som godare "sed" att använda de lokala och mer restriktiva sätten än globala
men det spelar inte så stor roll i små konsoll program som 1 funktion,

frågan är bara varför folk föredrar:

main() { std::cout<<"Hej" std::<<endl; std::cout<<" jag" std::<<endl; std::cout<<" heter" std::<<endl; std::cout<<" eric" std::<<endl; std::cout<<" vad" std::<<endl; std::cout<<" heter" std::<<endl; std::cout<<" du?" std::<<endl; std::cin>>namn; std::cout<<"Hur gammal är du " std::<<endl; std::cin>>alder; std::cout<<"Hur lång är du " std::<<endl; std::cin>>längd; std::cout<<"Hur mycket väger du? " std::<<endl; std::cin>>vikt; osv osv

istället för:

main() { using std::endl; using std::cout; using std::cin; cout<<"Hej" <<endl; cout<<" jag" <<endl; cout<<" heter" <<endl; cout<<" eric" <<endl; cout<<" vad" <<endl; cout<<" heter" <<endl; cout<<" du?" <<endl; cin>>namn; cout<<"Hur gammal är du " <<endl; cin>>alder; cout<<"Hur lång är du " <<endl; cinn>>längd; cout<<"Hur mycket väger du? " <<endl; cin>>vikt; osv osv