Win32 C ++从类中返回cout功能

时间:2013-10-31 19:11:39

标签: c++ winapi console

我正在处理一个简单的类,所以如果我使用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
}

感谢任何帮助,我也可能在某些地方使用了一些不正确的术语。

1 个答案:

答案 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。