बाहर चेक this guide। मैं एक कस्टम जोड़तोड़ कर तो मैं कुछ ऐसा कर सकता है जाएगा:
std::cout << "standard text" << setcolour(red) << "red text" << std::endl;
Here की कैसे अपनी खुद की जोड़तोड़ को लागू करने पर एक छोटे से गाइड।
एक त्वरित कोड उदाहरण:
#include <iostream>
#include <windows.h>
#include <iomanip>
using namespace std;
enum colour { DARKBLUE = 1, DARKGREEN, DARKTEAL, DARKRED, DARKPINK, DARKYELLOW, GRAY, DARKGRAY, BLUE, GREEN, TEAL, RED, PINK, YELLOW, WHITE };
struct setcolour
{
colour _c;
HANDLE _console_handle;
setcolour(colour c, HANDLE console_handle)
: _c(c), _console_handle(0)
{
_console_handle = console_handle;
}
};
// We could use a template here, making it more generic. Wide streams won't
// work with this version.
basic_ostream<char> &operator<<(basic_ostream<char> &s, const setcolour &ref)
{
SetConsoleTextAttribute(ref._console_handle, ref._c);
return s;
}
int main(int argc, char *argv[])
{
HANDLE chandle = GetStdHandle(STD_OUTPUT_HANDLE);
cout << "standard text" << setcolour(RED, chandle) << " red text" << endl;
cin.get();
}
यह कोड वास्तव में काम नहीं करता है, आपका पिछला संस्करण जिसे आपने अभी बदल दिया है। बीमार डबल चेक मैं सही है हालांकि –
@ ब्रॉक वूल्फ: हाँ, क्षमा करें। मुझे हैंडल की प्रतिलिपि में कोई समस्या थी। – Skurmedel
अद्भुत जो पूरी तरह से काम करता है। धन्यवाद! : डी –