0

我正在研究一个简单的类,因此如果我使用 cout “等效”,它将显示控制台,如果我不使用,则控制台不会弹出。

最终结果,如果可能的话,尝试让一些简单的东西使用它,比如:O.C() << "any type of data";ORO.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()是我试图用来使用流的功能。

我不知道在这里做什么,要么找到一种方法来返回一个句柄到 cout C(),或者找到一种方法来让C()接受任何类型的数据。

该类是基本的,看起来像:

class testout {
private: 
    bool display;
public:
    void ShowConsole();
    void C(); // which could return a handle, or accept any data type
}

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

4

1 回答 1

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 的更新。

于 2013-11-01T05:40:54.477 回答