我正在处理一个简单的类,所以如果我使用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
}
感谢任何帮助,我也可能在某些地方使用了一些不正确的术语。
答案 0 :(得分:0)
我想我也可以手动输入类型。
void testout::TOUT(int i) {cout << i;}
void testout::TOUT(double d) {cout << d;}
void testout::TOUT(char c) {cout << c;}
void testout::TOUT(char* cstr) {cout << cstr; }
void testout::TOUT(string str) {cout << str; }
在课堂上,对于那些函数,我还会附加更新显示为true。