2 ting...

Tags:    c++

1. ting--->
Jeg har lavet denne kode:
string command;
cin >> command;
cout << endl << command;

Men hvis jeg skriver en linie der indeholder mere end 1 ord så viser den kun det første...?
Hvordan gør jeg så jeg kan skrive f.eks. "connect test.com 80"?
og hvordan kan jeg senere dele denne tekst op mellem " " (mellemrum)?

2. ting--->
hvis nu min komando-prompt ser således ud:

Scanning ports...
scan 1%
25 Open ftp
_

Hvordan tjekker jeg hvilken linie makøren er på? og kan jeg ændre i en linie højre oppe? (f.eks. der hvor der står "scan 1%". Når den så er nået til 2%, så ændre linie til "scan 2%")

På forhånd tak



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Det med din cin, der skal du bruge funktionen getline, et eks.

Fold kodeboks ind/udKode 


Det andet spg. er jeg lidt i tvivl om.....:)

Jan Larsen
CO-owner Jabo-web.com
http://www.jabo-web.com/ref=3





2. ting--->
hvis nu min komando-prompt ser således ud:

Scanning ports...
scan 1%
25 Open ftp
_

Hvordan tjekker jeg hvilken linie makøren er på? og kan jeg ændre i en linie højre oppe? (f.eks. der hvor der står "scan 1%". Når den så er nået til 2%, så ændre linie til "scan 2%")

På forhånd tak

http://home20.inet.tele.dk/midgaard/snip/bille.html
Et eksempel på hvordan man rykker cursoren. Det er fra bertels hjemmeside.




Hvordan tjekker jeg hvilken linie makøren er på? og kan jeg ændre i en linie højre oppe? (f.eks. der hvor der står "scan 1%". Når den så er nået til 2%, så ændre linie til "scan 2%")

På forhånd tak


Du kan hente den nuværende cursor position med GetConsoleScreenBufferInfo(...) og som KOEN skriver sætte cursoren med SetConsoleCursorPosition(...).

Derved kan du lave noget der ligner:

Fold kodeboks ind/udKode 


Det forudsætter naturligvis at du kører windows.



Bertel -> Hvad er det der sker i de forskellige linier?



Først hentes et "håndtag" til vores standard output stream dvs. vores konsol vindue:
HANDLE con = GetStdHandle(STD_OUTPUT_HANDLE);

Så henter vi diverse information om den skærm con peger på:
GetConsoleScreenBufferInfo(con, &ConsoleScreenBufferInfo);

Den del vi er interreseret i er den nuværende cursor position, denne læses over i coord:
coord = ConsoleScreenBufferInfo.dwCursorPosition;

I løkken starter vi med at flytte cursoren til der hvor den var da vi startede:
SetConsoleCursorPosition(con, coord);

Så udskriver vi tre linier text.

Og går til staten på løkken.

Det bevirker at man hver gang skriver på de samme tre linier, og derved overskriver det man lige har skrevet.



Okay det er til at komme i nærheden af :)

Hvad hvis jeg i løkken vil sætte cursoren en linie længere ned end den vi indlæste uden at ændre det?

i stilen med:
SetConsoleCursorPosition(con, coord+1);
hvis du forstår...



Hvis du kikker på:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/coord_str.asp

Kan du se at COORD er en struktur der indeholder en X (column) og Y (Linie).

Så for at få den til at gå en linie ned skal du tælle coord.Y en op:

coord.Y++;

Efter du har læst position og inden du bruger den.



t