我正在向iOS应用程序添加C ++代码,我想使用UITextView来显示通过std :: cout的内容。我不想太多地修改C ++代码。
到目前为止,我已经在C ++代码的范围内定义了一个名为stdcout的字符串流,我对捕获输出感兴趣,并且在C ++块返回后我正在更新UITextView。这有点干扰,因为我需要做一些手动文本替换,而且容易出错。
有更好的方法吗?
答案 0 :(得分:3)
你可以看看rdbuf()。
如果您关心性能/灵活性,可以编写自定义流缓冲区并实现溢出成员,以便“自动”“实时”更新。
这是一个传递给字符串流的简单示例:
#include <sstream>
#include <iostream>
int main()
{
std::ostringstream oss;
auto saved = std::cout.rdbuf(oss.rdbuf());
std::cout << "hello world" << std::endl;
std::cout.rdbuf(saved);
return oss.str().length();
}
这个程序以我的cygwin shell上的exitcode'12'退出:
./test.exe; echo $?
12