Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将布尔数组或无符号字符*传递给cout?_C++_Actionscript 3_Air - Fatal编程技术网

C++ 如何将布尔数组或无符号字符*传递给cout?

C++ 如何将布尔数组或无符号字符*传递给cout?,c++,actionscript-3,air,C++,Actionscript 3,Air,我将76800个布尔值的数组传递给Actionscript AIR,这些布尔值可以是整数或无符号字符*。到目前为止,我提出的最好的解决方案是将我的C++应用程序作为一个本地进程,它可以让我的Apple应用程序访问STDUT。 我的解决方案在某种程度上是可行的,但我觉得这是一个可怕的黑客行为,我对ostream的理解还不够透彻,不知道如何传递信息: // Variables stringstream ss; int arrayLength = 76800; // Put data into st

我将76800个布尔值的数组传递给Actionscript AIR,这些布尔值可以是整数或无符号字符*。到目前为止,我提出的最好的解决方案是将我的C++应用程序作为一个本地进程,它可以让我的Apple应用程序访问STDUT。 我的解决方案在某种程度上是可行的,但我觉得这是一个可怕的黑客行为,我对ostream的理解还不够透彻,不知道如何传递信息:

// Variables
stringstream ss;
int arrayLength = 76800;

// Put data into stringstream
for (int i = 0; i < arrayLength; ++i){
    ss << data[i];
}

// Convert stringstream to stream
string message;
ss >> message;

// Send Data
cout << message;
有没有一种方法可以在一个大数据块中输出这些值,而不将它们转换为字符串

编辑:在AS3中,理想情况下,我会将这个传入数据转换为位图数据,以便将其用作位图数据


性能是个问题,这里-这本质上是一个2位图像,我正试图传递给as3,所以这一切都需要每秒发生15-30次。

作为第一次传递,为什么要费心将它们放入流中,而只是将其转换为字符串并写入流?一次完成即可:

int arrayLength = 76800;

for (int i = 0; i < arrayLength; ++i) {
    cout << data[i];
}
使用boolalpha标志,如下所示:

for (int i = 0; i < arrayLength; ++i) {
    cout << boolalpha << data[i] << endl;
}

但是,这不会触发76800次输出吗?我的AS3应用程序将尝试读取数据每当使用CUT,AS3是ScOOOW相比,C++,所以我宁愿只调用我的AS3摄取功能一次。试试看。stdio有buffering.Hmmm-似乎总是输出4096个值。所以它是缓冲的,但是我必须在as3端做一些逻辑来把它重新连接起来。可能BUFSIZ在你的系统上是4096。先发送布尔数,然后发送数据本身,怎么样?然后,接收端将知道继续读取,直到获得所有值。如果这不起作用,我想这可能意味着你的设计有更深层次的问题。这听起来是一个很好的解决方案。在这种情况下,bool的数量将始终与320x240图像中的所有像素相同,开或关。这听起来像是我最初希望将数据作为一个大数据块发送的想法可能不可能实现,这并不理想,但如果这是唯一的选择的话,这是可行的。哦,没有遇到boolalpha,谢谢!但是,我需要一次输出所有数据,这样我就可以在as3中的一大块中摄取数据,而不是一个接一个地接受76800个布尔值。输出每个布尔值并不有用,因为一个字符比4-5个字符加一个换行符更有效。对,0/1比“真”/“假”更紧凑,但是这是C++ N900B的一个很好的提示:对不起,误读了你的问题。由于stdout是用于文本的,因此您的解决方案可能是最好的。唯一的另一种选择是查看C++是否可以将STDUT设置为二进制模式,但这不是标准的,所以你必须查阅你正在使用的编译器。看起来我可以试试:_setmode1,_O_BINARY打开二进制模式,然后cout.writedata,76800;把它送出去。明天我得试一试。