Poco :: Base64Decoder流未返回完整的字符串

Das*_*nym 2 c++ base64 poco poco-libraries

不知道我是否使用错了,因为这不是我真正的专业领域,但是我给我的印象是,这应该给我一个完整的解码的openframeworks缓冲区(或者一个简单的字符串,我尝试了各种方法也都得到了相同的结果)短字符串):

string str; // string is a line from a file handle and shows to be ok in the debugger
istringstream istr(str);
Poco::Base64Decoder b64in(istr);
ofBuffer buffer;
b64in >> buffer;
Run Code Online (Sandbox Code Playgroud)

现在我正在解码的示例base64字符串是这一行:

I2J1bmRsZQAAAAAAAAAAAQAAABwvT1NDL1NwYWNlSW50ZW5zaXR5ACxmAAA6nUlSAAAAFC9PU0MvU3BlZWQAACxmAAA90/fPAAAAGC9PU0MvU21vb3RobmVzcwAsZgAAP2Wu5gAAABQvT1NDL1JlYWNoAAAsZgAAPnxQSAAAABgvT1NDL0RlbnNpdHkAAAAALGYAAAAAAAAAAAAYL09TQy9Db2hlcmVuY2UAACxmAAA+tYEGAAAAIC9PU0MvVHJhdmVsSW50ZW5zaXR5AAAAACxmAAA8eQlsAAAAFC9PU0MvUmh5dGhtACxmAAA+6LQ5AAAAGC9PU0MvSGFybW9ueQAAAAAsZgAAPui0OQAAABQvT1NDL0VuZXJneQAsZgAAPYznBA==
Run Code Online (Sandbox Code Playgroud)

该行无法解析为简单的ascii文本,而是由某些vvvv修补程序在base64中转储的原始osc数据包,我无法访问...所以我想这也可能是编码问题?

而且我得到的所有输出,无论我使用流式复印机还是像上面的运算符,都只是“ #bundle”。这可能与“ #bundle”之后的/字符或其他非标准内容有关吗?我的印象是,Base64Decoder不在乎空白或在解码数据中找到的任何内容。

Das*_*nym 5

所以我最终没有使用运算符,而是将base64decoder的输出复制到流中,然后从中获取一个字符串:

istringstream istr(str);
ostringstream ostr;
Poco::Base64Decoder b64in(istr);
copy(std::istreambuf_iterator<char>(b64in),
    std::istreambuf_iterator<char>(),
    std::ostreambuf_iterator<char>(ostr));
cout << ostr.str(); // returns full decoded output
Run Code Online (Sandbox Code Playgroud)