0
我正在研究一個簡單的類,這樣如果我使用cout「equivalent」,它將顯示控制檯,如果我不這樣做,控制檯不會彈出。Win32 C++ Return cout功能
如果可能,最終結果是嘗試使用它,例如:O.C() << "any type of data";
或O.C("any type of data");
相當於std::cout
流。這次旅行是爲了讓我知道它是否被使用過。
// the obvious, shows and opens a/the console window so I can use the cout and cin streams.
void ShowConsole() {
AllocConsole();
HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
int hCrt = _open_osfhandle((long) handle_out, _O_TEXT);
FILE* hf_out = _fdopen(hCrt, "w");
setvbuf(hf_out, NULL, _IONBF, 1);
*stdout = *hf_out;
HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
hCrt = _open_osfhandle((long) handle_in, _O_TEXT);
FILE* hf_in = _fdopen(hCrt, "r");
setvbuf(hf_in, NULL, _IONBF, 128);
*stdin = *hf_in;
}
從那裏,我不知道該怎麼做。爲了簡單起見,我寫作的課程全球定義爲「O」。函數C()
是我正在嘗試使用的流。
我不知道這裏要做什麼,要麼找到一種方法來返回與C()
cout的句柄,要麼找到一種方法讓C()
接受任何類型的數據。
類是基本的,只是看起來像:
class testout {
private:
bool display;
public:
void ShowConsole();
void C(); // which could return a handle, or accept any data type
}
任何幫助表示讚賞,我也可能用在點一些不正確的術語。
[可變模板](http://en.wikipedia.org/wiki/Variadic_template)。 –
@CaptainObvlious:這與訪問控制檯有什麼關係? –
我很困惑。我認爲大多數控制檯應用程序都在控制檯內部運行,而不是選擇創建/銷燬他們生活的唯一東西。非控制檯應用程序通常會生成控制檯應用程序以顯示控制檯窗口。 (或者讓GUI看起來像一個東西)我留下的是爲什麼徹底打開'stdout'然後用檢索的內容替換當前的'stdout'是有意義的? – 2013-10-31 20:46:24