C++

  • #1
F

Frazze

Bekanntes Mitglied
Themenersteller
Dabei seit
22.12.2005
Beiträge
90
Reaktionspunkte
0
Ort
Kirchheim/Teck
Hallo,

ich habe mir vor kurzem ein Buch über C++ gekauft weil ich das lernen möchte.
In dem Buch werden die Programme (ich nehm mal als Bsp. das Hello World!) so geschrieben:

include <iostream>

using namespace std;

int main()
{
cout << Hello World!
}

Als ich diesen Code komilliert und dann die .exe ausgeführ habe hat sich das Fenster so schnell geöffnet und wieder geschlossen das man überhapt nichts lesen konte von dem Hello World.
In einem Online-Tuturial habe ichd as ganze dann mit einem cin.get(); am Schluss gefunden, mit cin.get(); bleibt das Fenster ja geöffnt bis man Enter drückt, aber in dem Buck gibt es kein einziges Programm das cin.get(); enthält.
Jetzt frage ich mich ob das ein durchgehender Fehler im Buch ist, oder ob es auch ohne cin.get(); gehen müsste, und wenn, wie? Was müsste ich dann machen/ändern?

MfG Frazze
 
  • #2
Frazze schrieb:
ob das ein durchgehender Fehler im Buch ist

Nö, ist gar kein Fehler ;)

Wenn du die *.exe von der Eingabeaufforderung aus öffnest, bleibt das Fenster auch offen ^-^

Wirst du so oder ähnlich in jedem Buch finden :)

edit:
sollte aber auch zu 100% im Buch stehen, vorzugsweise ziemlich am Anfang ;)
 
  • #3
Danke erst mal für die schnelle Antwort.
Habe im Buch nachgeschaut, da steht echt nichts davon :-\

Und wie öffnet man eine *.exe von der Eingabeaufforderung? :-[

MfG
 
  • #4
wenn du im richtigen Verzeichnis bist, genügt der name der exe, z.B:

hallo_welt [RETURN]
oder
hallo_welt.exe [RETURN]

wenn du nicht im richtigen Verzeichnis bist, solltest du dorthin wechseln, oder den Pfad vor die *.exe schreiben

z.B:

C:\Testprogramme\hallo_welt.exe [RETURN]
 
  • #5
Aha, jetzt versteh ich :D
Danke.
 
  • #6
also ,

das ist KEIN Fehler !

Die Programme am Anfang sind doch eh alle ziemlich sinnfrei oder ?

aber der Lerneffekt ist da!

aber mit
Code:
cin.get()
kannst du wie du es schon gepostet hast bis zum Enter-Druck offen halten....

ich lerne ja auch noch... (mit Borland C++)


Ach ich hab auch noch eine Frage für die ich keinen eigen thread aufmachen will:

ich bin es von QBasic gewöht , dass man mit GOTO ganz einfach einfach durch das Programm hin und her springen kann , nun ist C++ aber eine Programmiersprache die ohne GOTO auskommt .Sondern C++ arbeitet mit Functionen .

So jetzt ein Programm wie ich es in Basic geschrieben hätte :

Code:
10 CLS
20 PRINT Hallo1
30 PRINT Hallo2
40 END

So nun will ich ,dass Hallo2 als erstes kommt :

Code:
10 CLS
20 GOTO 50
30 PRINT Hallo1
40 GOTO 70
50 PRINT Hallo2
60 GOTO 30
70 END

SO nun erst Hallo1 aber in C++

Code:
Bla Bla Bla...

cout << Hallo1 << endl;
cout << Hallo2 ;

...Bla Bla Bla

Wie kann ich jetzt Hallo2 zu erst zeigen ohne ,dass ich einfach das hier mache :

Code:
cout << Hallo2 << endl;
cout << Hallo1;
 
  • #7
Also ich würde das so machen (auchw enn ich noch ein Anfänger bin) ;)

Code:
#include <iostream>

using namespace std;

void hello1(void)
{
  cout << Hello World 1. <<endl;
}

void hello2(void)
{
  cout << Hello World 2. <<endl;
}

int main()
{
  hello2();
  hello1();
}


MfG Frazze
 
  • #8
Code:
#include <iostream>

using namespace std;

void taste1(void)
{
cout << ! Herzlichen Glückwusch ! Sie haben 1 gedrückt . << endl;
}

void catherin(void)
{
cout << Sie haben leider nicht 1 gedrückt << endl;
}

int main()
{
cout <<Versuchen sie es die 1 zu drücken, dies könnte sehr schwierig werden^^ << endl;

long a
cin >> a;

if (a == 1)
{
taste1();
}

catherin();


}


würde das hier funktionieren ?
 
  • #9
Ja, ich denke das würde funktionieren wenn du hinter
Code:
long a
ein
Code:
;
machst^^ ;D
 
  • #10
Ich wollte nich noch einen Tread aufmachen, deshlab stelle ich meine Frage (nochmal) hier rein.
Ich hoffe es hat jemand Lust sich den ganzen Code überhaupt anzuschauen.

Code:
#include <iostream>

using namespace std;

void volumen1(void)
{
  long double v, r, h, pi = 3.14159265358979323846;
  
  cout << Volumen nach der Formel V = r^2*h*pi berechen.\n <<endl;
  cout << r(Radius) eingeben. <<endl;
  cin >> r;
  cout << h(Hoehe) eingeben. <<endl;
  cin >> h;
  
  v=(r*r)*h*pi;
  
  cout << Das Volumen betraegt  << v <<  m^3. <<endl;
  cout << __________________________________________________________________ <<endl;
  
  cin.get();
  cin.get();
}  

void arbeit2(void)
{
  long double w, f, s;
  
  cout << Arbeit(allgemein) nach der Formel W = F*s berechnen.\n <<endl;
  cout << F(Kraft) in N eingeben. <<endl;
  cin >> f;
  cout << s(Weg) in m eingeben. <<endl;
  cin >> s;
  
  w=f*s;
  
  cout << Die Kraft betraegt  << w <<  N. <<endl;
  cout << __________________________________________________________________ <<endl;
  
  cin.get();
  cin.get();
}

void elektrischeleistung3(void)
{
  long double p, u, i;
  
  cout << Elektrische Leistung nach der Formel P = U*I berechnen.\n <<endl;
  cout << U(Spannung) in V eingeben. <<endl;
  cin >> u;
  cout << I(Stromstaerke) in A eingeben. <<endl;
  cin >> i;
  
  p=u*i;
  
  cout << Die elektrische Leistung betraegt  << p <<  J/s. <<endl;
  cout << __________________________________________________________________ <<endl;
  
  cin.get();
  cin.get();
}

void elektrischerwiederstand4(void)
{
  long double r, u, i;
  
  cout << Elektrischer Wiederstand nach der Formel R = U/I berechnen.\n <<endl;
  cout << U(Spannung) in V eingeben. <<endl;
  cin >> u;
  cout << I(Stromstaerke) in A eingeben. <<endl;
  cin >> i;
  
  r=u*i;
  
  cout << Der elektrische Wiederstand betraegt  << r <<  Ohm. <<endl;
  cout << __________________________________________________________________ <<endl;
  
  cin.get();
  cin.get();
}

void elektrischearbeit5(void)
{
  long double w, u, i, t;
  
  cout << Elektrische Arbeit nach der Formel P = U*I*t berechnen.\n <<endl;
  cout << U(Spannung) in V eingeben. <<endl;
  cin >> u;
  cout << I(Stromstaerke) in A eingeben. <<endl;
  cin >> i;
  cout << t(Zeit) in s angeben. <<endl;
  cin >> t;
  
  w=u*i*t;
  
  cout << Die elektrische Arbeit betraegt  << w <<  J. <<endl;
  cout << __________________________________________________________________ <<endl;
  
  cin.get();
  cin.get();
}

void prozent6(void)
{
  long double P, g, p;
  
  cout << Prozent nach der Formel P = (g*p)/100 berechnen.\n <<endl;
  cout << G(Grundwert) eingeben. <<endl;
  cin >> g;
  cout << (p)Prozentsatz in % eingeben. <<endl;
  cin >> p;
    
  P = (g*p)/100;
    
  cout << Das Ergebnis betraegt  << P <<  . <<endl;
  cout << __________________________________________________________________ <<endl;
   
  cin.get();
  cin.get();
}  


int main()
{
  cout << Das ist mein kleines (selber gemachtes) Formel-Rechen-Programm, ich  <<endl;
  cout << hoffe mal ihr kommt einiger Masen damit zurecht^^.\n <<endl;
  cout << Wenn jemand gerne ein paar weitere Formeln dabei haben moechte, so  <<endl;
  cout << kann er mich gerne anschreiben/ansprechen.\n <<endl;
  cout << __________________________________________________________________ <<endl;
  cout <<  Die 1 fuer Volumen.\n <<endl;
  cout <<  Die 2 fuer Arbeit(allgemein).\n <<endl;
  cout <<  Die 3 fuer elektrische Leistung.\n <<endl;
  cout <<  Die 4 fuer elektrischen Wiederstand.\n <<endl;
  cout <<  Die 5 fuer elektrische Arbeit.\n <<endl;
  cout <<  Die 6 fuer Prozentrechnung.\n <<endl;
  cout << __________________________________________________________________ <<endl;
  
  int zahl;
  cin >> zahl;
  
  if(zahl==1)
  {
    volumen1();
  }
  if(zahl==2)
  {
    arbeit2();
  }
  if(zahl==3)
  {
    elektrischeleistung3();
  }
  if(zahl==4);
  {
    elektrischerwiederstand4();
  }
  if(zahl==5)
  {
    elektrischearbeit5();
  }
  if(zahl==6)
  {
    prozent6();
  }

  
  cin.get();
  cin.get();
}



So, erst mal bedanke ich mich bei dem, der das ganze durchgelesen hat. Thx. :)

Jetzt mein Problem: Wenn ich das ganze ausführe, dann soll man ja mit den Zahlen die jeweilige Formel aufrufen, nun funktioniert dieses Verfahren nur bis zur Zahl 4, wenn man die Zahl 5 oder 6 eingibt, dann wird die Formel 4 ausgeführt und nicht die Formel 5 oder 6.
Wenn ich jetzt aber z.B. 4 drücke und dann da mit der Formel rechne und dann enter drücke, dann springt das Programm gleich zu der Formel 6 und überspringt dabei Formel 5. ???

Ich habe keine Ahnung warum das so ist, habe schon verschiedene Sachen ausprobiert, z.B. Funktionsnamen geändert, da der Compiler die Funktionsnamen ja nur bis zu einer bestimmen länge (Zeichenanzahl) vergleicht oder anstatt
Code:
if(zahl==5)
Code:
if((zahl>4)&&(zahl<6))
geschrieben, was ja die selbe Wirkung wie zahl==5 haben müsste. Hat aber nichts geändert.

Wäre echt nett wenn mir jemand auf die Sprünge helfen kann was da faul ist.


MfG Frazze
 
  • #11
if(zahl==4);
{
  elektrischerwiederstand4();
}
 
  • #12
OMG.
Ich habe mir den ganzen Code bestimmt 10 mal durchgelesen. Und habe das nicht bemerkt... wie kann das sein...
Naja, danke für die Hilfe.

MfG
 
  • #13
ah erinnert mich an meine ersten Progs :)

mmm, dein Menü gefällt mir im Grundsatz ganz gut aber ich fand es in Basic immer schöner wenn man das hier macht :

Beenden
Volumen

oder:

Arbeit

man müsste nur einen passenden Befehl kennen ......

edit:

so sah es in basic aus :

Code:
10 CLS 
20 COLOR 14.0.0
30 LOCATE 1.1 
40 PRINT A
50 COLOR 7.0.0
60 LOCATE 1.2
70 PRINT rbeit
80 END

Ausgabe:
Arbeit
 
  • #14
Hi

Für Farben gibt es bestimmte Escape Sequenzen. Wem das zu kompliziert ist, der kann libraries wie pcurses oder ncurses nehmen. Kommt aber drauf an ob die Konsole das unterstützt.

Gruß, Michael
 
  • #15
Also ,

Bei längeren Programmen ist es meiner Meinung nach sehr kompliziert mit
Code:
void
zu arbeiten . Und es gibt in C++ noch den
Code:
goto
Befehl . Nun zur Frage :

Spricht etwas gegen den
Code:
goto
Befehl?
Wenn ja gibt es noch eine andere Möglichkeit ?

Frage 2:

Kannst du ein Beispiel mit einer Farbändrung eines einzeln Buchstaben posten ?

Frage 3:

Kann man die erstellten .EXE Dateien im Vollbild ausführen ?

Frage 4:

gibt es einen Befehl wie
Code:
LOCATE
,der die Position der folgenden Ausgabe bestimmt ?
 
  • #16
also ich hab jezt naoch mal ein bischen gegooglet und bin darauf ,dass goto ein programm unübersichtlich macht , meiner Meinung nach kann es das Programm zwar unübersichtlich machen ,muss es jedoch nicht denn in diesem programm ist jeder 2 Befehl Goto und ich finde es ist noch übersichlich:

Code:
DECLARE SUB farbe ()
DECLARE SUB INTEL ()
DECLARE SUB LEVEL01 ()
COMMON SHARED zeileg, spalteg, zeile, spalte, timeg, geggas






CLS


LEVEL01
farbe

zeileg = 20
spalteg = 20
zeile = 10
spalte = 10
geggas = .25
  
start:
  
  DO
  
  INTEL
  strg1$ = INKEY$
  
  LOOP UNTIL LEN(strg1$) > 0

 IF LEN(strg1$) = 1 THEN
   IF ASC(strg1$) = 27 THEN END

 END IF
 IF LEN(strg1$) = 2 THEN
   IF ASC(MID$(strg1$, 2, 1)) = 72 THEN GOTO up
   IF ASC(MID$(strg1$, 2, 1)) = 80 THEN GOTO down
   IF ASC(MID$(strg1$, 2, 1)) = 75 THEN GOTO left
   IF ASC(MID$(strg1$, 2, 1)) = 77 THEN GOTO right
 END IF


'-------------------UP----------------------

up: zeilea = zeile
  zeile = zeile - 1
  l = SCREEN(zeile, spalte)
  IF l = 35 THEN GOTO ng9: ELSE GOTO g9:

ng9: LOCATE zeile, spalte: PRINT #
   zeile = zeile + 1
g9:

  LOCATE zeilea, spalte: PRINT  
  
  LOCATE zeile, spalte: PRINT H
  GOTO start:
'------------------DOWN---------------------
down: zeilea = zeile
  zeile = zeile + 1
  l = SCREEN(zeile, spalte)
  IF l = 35 THEN GOTO ng10: ELSE GOTO g10:

ng10: LOCATE zeile, spalte: PRINT #
   zeile = zeile - 1

g10: LOCATE zeilea, spalte: PRINT  
   LOCATE zeile, spalte: PRINT H
   GOTO start
'------------------LEFT---------------------
left: spaltea = spalte
  spalte = spalte - 1
  l = SCREEN(zeile, spalte)
  IF l = 35 THEN GOTO ng11: ELSE GOTO g11:

ng11: LOCATE zeile, spalte: PRINT #
   spalte = spalte + 1

g11: LOCATE zeile, spaltea: PRINT  
   LOCATE zeile, spalte: PRINT H
   GOTO start
'------------------RIGHT--------------------
right: spaltea = spalte
  spalte = spalte + 1
  l = SCREEN(zeile, spalte)
  IF l = 35 THEN GOTO ng12: ELSE GOTO g12:

ng12: LOCATE zeile, spalte: PRINT #
   spalte = spalte - 1

g12: LOCATE zeile, spaltea: PRINT  
   LOCATE zeile, spalte: PRINT H
   GOTO start

SUB farbe

posi01 = 1
posi02 = 1

start02:


l = SCREEN(posi01, posi02)

IF l = 35 THEN COLOR 14, 0, 1: LOCATE posi01, posi02: PRINT #







IF posi01 = 50 THEN GOTO posiplus:
posi01 = posi01 + 1

GOTO start02:

posiplus:
IF posi02 = 80 THEN EXIT SUB

posi02 = posi02 + 1
posi01 = 1
GOTO start02:






END SUB

SUB INTEL

IF timeg < TIMER THEN GOTO startintel: ELSE EXIT SUB
startintel:











   
LOCATE zeile, spalte: PRINT H




los:
neu:
IF spalte = spalteg THEN GOTO neu1: ELSE GOTO neu10:
neu1: IF zeile = zeileg THEN GOTO neu2: ELSE GOTO neu10:
neu2: LOCATE zeileg, spalteg: COLOR 3, 0, 0: PRINT O
END












neu10:








'------------------------------geg-------------------------------

IF zeile > zeileg THEN GOTO 100
IF zeileg > zeile THEN GOTO 110





'-------- zeile > zeileg ---------


100
IF spalte > spalteg THEN GOTO 1000
IF spalteg > spalte THEN GOTO 1010




'-------- zeileg > zeile ---------




110
IF spalte > spalteg THEN GOTO 2000
IF spalteg > spalte THEN GOTO 2010

'--------------------------------------------------------------

'zeileg > zeile --- SpalteG > Spalte
2010

zeile01 = zeileg - zeile
spalte01 = spalteg - spalte
IF zeile01 > spalte01 THEN GOTO 10060
IF spalte01 > zeile01 THEN GOTO 10070

'--------gehe nach OBEN-------
10060 zeilega = zeileg
   zeileg = zeileg - 1

l = SCREEN(zeileg, spalteg)
IF l = 35 THEN GOTO ng1: ELSE GOTO g1:
ng1:
zeileg = zeileg + 1
   
   GOTO 10070
g1:


LOCATE zeilega, spalteg: PRINT  
LOCATE zeileg, spalteg: PRINT O: GOTO 1

'--------gehe nach LINKS------
10070 spaltega = spalteg
   spalteg = spalteg - 1

l = SCREEN(zeileg, spalteg)
IF l = 35 THEN GOTO ng2: ELSE GOTO g2:
ng2:
spalteg = spalteg + 1
   
   GOTO 10060
g2:





LOCATE zeileg, spaltega: PRINT  
LOCATE zeileg, spalteg: PRINT O: GOTO 1



'--------------------------------------------------------------

'zeileg > zeile --- Spalte > SpalteG

2000
zeile01 = zeileg - zeile
spalte01 = spalte - spalteg
IF zeile01 > spalte01 THEN GOTO 10040
IF spalte01 > zeile01 THEN GOTO 10050


'---- gehe nach OBEN ----
10040 zeilega = zeileg
   zeileg = zeileg - 1
l = SCREEN(zeileg, spalteg)
IF l = 35 THEN GOTO ng3: ELSE GOTO g3:
ng3:
zeileg = zeileg + 1
  
   GOTO 10050
g3:


LOCATE zeilega, spalteg: PRINT  
LOCATE zeileg, spalteg: PRINT O: GOTO 1



'---- gehe nach RECHTS---
10050 spaltega = spalteg
   spalteg = spalteg + 1

l = SCREEN(zeileg, spalteg)
IF l = 35 THEN GOTO ng4: ELSE GOTO g4:
ng4:
spalteg = spalteg - 1
   
   GOTO 10040
g4:

LOCATE zeileg, spaltega: PRINT  
LOCATE zeileg, spalteg: PRINT O: GOTO 1


'--------------------------------------------------------------

'zeile > zeileg  ---  SpalteG > Spalte
1010
zeile01 = zeile - zeileg
spalte01 = spalteg - spalte
IF zeile01 > spalte01 THEN GOTO 10020
IF spalte01 > zeile01 THEN GOTO 10030

'--- gehe nach UNTEN ------
10020 zeilega = zeileg
  zeileg = zeileg + 1

l = SCREEN(zeileg, spalteg)
IF l = 35 THEN GOTO ng5: ELSE GOTO g5:
ng5:
zeileg = zeileg - 1
   
   GOTO 10030
g5:

LOCATE zeilega, spalteg: PRINT  
LOCATE zeileg, spalteg: PRINT O: GOTO 1

'--- gehe nach LINKS ------

10030 spaltega = spalteg
  spalteg = spalteg - 1

l = SCREEN(zeileg, spalteg)
IF l = 35 THEN GOTO ng6: ELSE GOTO g6:
ng6:
spalteg = spalteg + 1
   
   GOTO 10020
g6:
LOCATE zeileg, spaltega: PRINT  
LOCATE zeileg, spalteg: PRINT O: GOTO 1


->-------------------------------------------------------------




' zeile > zeileg  ---  spalte > spalteG
1000
zeile01 = zeile - zeileg
spalte01 = spalte - spalteg
IF zeile01 > spalte01 THEN GOTO 10000
IF spalte01 > zeile01 THEN GOTO 10010




'-----------UNTEN--------------

10000 zeilega = zeileg
   zeileg = zeileg + 1

l = SCREEN(zeileg, spalteg)
IF l = 35 THEN GOTO ng7: ELSE GOTO g7:
ng7:      
zeileg = zeileg - 1
  
   GOTO 10010
g7:
LOCATE zeilega, spalteg: PRINT  
LOCATE zeileg, spalteg: PRINT O: GOTO 1
'-----------RECHTS-------------

10010 spaltega = spalteg
  spalteg = spalteg + 1
l = SCREEN(zeileg, spalteg)
IF l = 35 THEN GOTO ng8: ELSE GOTO g8:
ng8:
spalteg = spalteg - 1
   
   GOTO 10000
g8:


LOCATE zeileg, spaltega: PRINT  
LOCATE zeileg, spalteg: PRINT O: GOTO 1




1




 timeg = TIMER + geggas


END SUB

SUB LEVEL01
PRINT ###################################################################
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT #   #   #     #                     #
PRINT #                                 #
PRINT #       #                         #
PRINT #   #     #                        #
PRINT #            #                     #
PRINT #     #    #                       #
PRINT #      #          #  ##################     #
PRINT #  #     #         #                #
PRINT #                 #                #
PRINT #            #    #                #
PRINT #         #        #                #
PRINT #            #    #                #
PRINT #                 #                #
PRINT #   #             #                #
PRINT #                 #                #
PRINT #       #          #                #
PRINT #                 #                #
PRINT #            ##########                #
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT #                                 #
PRINT ###################################################################

END SUB


und kommt jemand drauf ,was diesen prog macht ?
 
  • #17
Hi

Gewöhn dir GOTOs gleich ab. Es gibt fast immer eine Möglichkeit das nachvollziehbarer zu Programmieren.

Zu Escapesequenzen:
\033[40m\033[31m Rot \033[0m

Weiß aber nicht ob das unter Windows direkt geht.

Gruß, Michael
 
  • #18
kannst du mir in einem beispiel zeigen ,wie es geht ?:

Bsp:


cout << x << endl;

wie kann ich x einfärben ?
 
  • #19
Unter Windows müsstest Du einen ANSI-Treiber laden etc.
Alternativ kann Du Konsolenfunktionen der WinAPI verwenden. Beispiel:

Code:
void clrscr() {
  DWORD cCharsWritten;
  CONSOLE_SCREEN_BUFFER_INFO csbi;
  DWORD dwConSize;
  HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  COORD coordScreen = {0, 0};

  GetConsoleScreenBufferInfo(hConsole, &csbi);
  dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
  FillConsoleOutputCharacter(hConsole, TEXT('->), dwConSize, coordScreen, &cCharsWritten);
  GetConsoleScreenBufferInfo(hConsole, &csbi);
  FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten);
  SetConsoleCursorPosition(hConsole, coordScreen);
}

void cursorxy(int x, int y) {
  COORD point;
  point.X = x; point.Y = y;
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), point);
}

void txtClrDefault() {
  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                          FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}

void txtClrGreen() {
  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                          FOREGROUND_INTENSITY | FOREGROUND_GREEN);
}

Code:
  txtClrDefault();
  clrscr();

  txtClrGreen();
  cout << endl <<  B;
  txtClrDefault();
  cout << eenden << endl;


  // Beim Programmende zurücksetzen (besser: am Anfang die Farbe auslesen) ...
  // txtClrDefault();
  // clrscr();
 
  • #20
also :

Eine andere Möglichkeit :

wenn man den alten wincon.h abschnitt für Farben mit dem hier ersezt kann man alle 16 Farben benutzen .

Code:
#define FOREGROUND_BLACK   0x0000
#define FOREGROUND_BLUE   0x0001 // text color contains blue.
#define FOREGROUND_GREEN   0x0002 // text color contains green.
#define FOREGROUND_ZYAN   0x0003
#define FOREGROUND_RED    0x0004 // text color contains red.
#define FOREGROUND_VIOLETT  0x0005
#define FOREGROUND_OLIVE   0x0006
#define FOREGROUND_WHITE   0x0007
#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
#define FOREGROUND_BLUE2   0x0009
#define FOREGROUND_GREEN2  0x000a
#define FOREGROUND_ZYAN2   0x000b
#define FOREGROUND_RED2   0x000c
#define FOREGROUND_VIOLETT2 0x000d
#define FOREGROUND_YELLOW  0x000e
#define FOREGROUND_WHITE2  0x000f

#define BACKGROUND_BLACK   0x0000
#define BACKGROUND_BLUE   0x0010 // text color contains blue.
#define BACKGROUND_GREEN   0x0020 // text color contains green.
#define BACKGROUND_ZYAN   0x0030
#define BACKGROUND_RED    0x0040 // text color contains red.
#define BACKGROUND_VIOLETT  0x0050
#define BACKGROUND_OLIVE   0x0060
#define BACKGROUND_WHITE   0x0070
#define BACKGROUND_INTENSITY 0x0080 // text color is intensified.
#define BACKGROUND_BLUE2   0x0090
#define BACKGROUND_GREEN2  0x00a0
#define BACKGROUND_ZYAN2   0x00b0
#define BACKGROUND_RED2   0x00c0
#define BACKGROUND_VIOLETT2 0x00d0
#define BACKGROUND_YELLOW  0x00e0
#define BACKGROUND_WHITE2  0x00f0


das geht so :

Code:
#include <iostream>
#include <windows.h>

using namespace std;

HANDLE hStdout;

int main()
{
 hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleTextAttribute(hStdout, FOREGROUND_YELLOW);
 cout << H ;
 SetConsoleTextAttribute(hStdout, FOREGROUND_WHITE);
 cout <<allo<<endl;
cin.get();
 return 0;
}

ausgabe ist :

Hallo
 
Thema:

C++

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben