06. marts 2009 - 04:53
Der er
1 kommentar og
1 løsning
Formatering
Hej
Jeg sidder og følger en bog omhandlende c++, og i bogen skriver han:
#include <iostream.h>
int main()
{
int vaerdi = 15;
cout << dec << vaerdi << '\t' << oct << vaerdi << '\t'
<< hex << vaerdi;
cout << '\n';
return 0;
}
Men når jeg prøver at kompilere koden får jeg fejl på 'dec', 'oct' og 'hex'. Hvad er problemet?
Jeg bruger Dev-C++ 4.9.9.2 som kompiler og editor.
Bogen er rimelig gammel, hvis det kan ha' noget at sige.
På forhånd tak.
06. marts 2009 - 11:21
#1
Det meget korte svar er, at der mangler en #include <iomanip.h>.
Det lidt længere svar:
Ja, bogen lader til at være temmelig gammel; namespaces lader til at være et ukendt begreb. En mere moderne udgave kunne lyde:
#include <iostream>
#include <iomanip>
int main ()
{
const char sep = '\t' ;
// lettere end at skrive '\t' hvergang
// - og lettere, hvis du vil ændre
// separatortegnet en dag
int val = 15 ;
std::cout
<< std::dec << val
<< sep << std::oct << val
<< sep << std::hex << val
<< std::endl ;
}
Forskellen på #include <iostream> og #include <iostream.h> er, at iostream.h lægger standardbibliotekets funktioner ud i global namespace, af hensyn til gamle programmer, der ikke kender namespaces. En #include <iostream> bibeholder funktionerne i namespace std.
I stedet for at skrive std::cout, std::dec etc, hver gang, du vil bruge en funktion fra standardbiblioteket kan du åbne hele std namespace:
#include <iostream>
#include <iomanip>
using namespace std ;
int main ()
{
const char sep = '\t' ;
int val = 15 ;
cout << dec << val << sep << oct << val << sep << hex << val << endl ;
}
Eller specificere namespace for hvert enkelt eksternt navn, du anvender i din funktion:
#include <iostream>
#include <iomanip>
int main ()
{
using std::cout ;
using std::dec ;
using std::oct ;
using std::hex ;
using std::endl ;
const char sep = '\t' ;
int val = 15 ;
cout << dec << val << sep << oct << val << sep << hex << val << endl ;
}