c++ Wie std::string in WORD umwandeln ? oder bessere idee ?
-
Hi, ich will einen server programmieren den man farbigen text zuschicken kann, mit colorcodes wie bei MC,dafür habe ich diesen code:
#include <iostream> #include <windows.h> #include <string> int main() { HANDLE han = GetStdHandle(STD_OUTPUT_HANDLE); char colorcode[18] = "0123456789abcdef"; //FARBCODES: &1:dunkkel blau, &2:dunkel grün . . . . char text[100] = "HALLOOOOO&1BLAUUU"; // text der in farben gezeogt werden soll unsigned color; for(int i = 0;i < sizeof(text)/sizeof(char); i++) { if(text[i] == '&') //wen ein colorcode gefunden würde { color = 0x0 + text[i+1]; SetConsoleTextAttribute(han, color); // 2 parameter soll ein word sein, wie könnte ich hier ein string statt word eingeben ? i++; }else { std::cout << text[i]; }} std::cout << std::endl; system("PAUSE"); return 0; }
Wen noch jemand vorschläge hat wie ich das besser machen könnte bitte dagen
SRY WEGEN DER RECHTSCHREIBUNG
-
hdasjkhdjkh schrieb:
...
SetConsoleTextAttribute(han, color); // 2 parameter soll ein word sein, wie könnte ich hier ein string statt word eingeben ?
Statt "unsigned color" sollte es "WORD color" heissen.
Können wir davon ausgehen, das du das char array versendest und
der gezeigte Code Teil den Empfängers ist?Wo ist dann genau das Problem?
-
@hdasjkhdjkh
Guck dir mal die Funktionstrchr
an:
http://www.cplusplus.com/reference/cstring/strchr/Ansonsten kannst du dir natürlich auch den Umstand zunutze machen dass die Character Codes für 0...9 und a...f üblicherweise "am Stück" liegen.
Oder, die ganz brutale Variante wäre einen String zu basteln und diesen dann mit einer Library-Funktion zu parsen.
Also z.B.for(int i = 0;i < sizeof(text)/sizeof(char); i++) { if(text[i] == '&') { char buffer[] = { text[i+1], 0 }; // null-terminierten Hex-String basteln color = strtol(buffer, 0, 16); // strtol aufrufen um den Hex-Wert in diesem String zu parsen SetConsoleTextAttribute(han, color); i++; }else { std::cout << text[i]; }}
-
Danke für deinen code hustbaer ! funktioniert super