当我打电话时
message_cref msg = decoder.decode(start,end);
它在扔
\src\mfast\coder\decoder\fast_istreambuf.h(47): Throw in f
unction unsigned char __thiscall mfast::fast_istreambuf::sbumpc(void)
Dynamic exception type: class boost::exception_detail::clone_impl<class mfast::fast_dynamic_error>
std::exception::what: Unknown exception [struct mfast::tag_error_code *] = Buffer underflow
它是一个库头文件。当我对字符串进行硬编码并将其传递给解码时不会出现这种情况,但是当我通过将数据编码为 UTF-8 来传递数据时会失败。
我从交易所得到的数据是
"Ýÿ”20181009-06:49:09.66±±jÏ€€€‚_À€ôCOCUDAKL20DEC201¸2972³ø2?IÁ€€€€€€€s•€€€€€€€€€€“ö€‚ "
使用 C++/CLI 将其转换为 UTF-8
array<Byte>^ byteArray = Encoding::UTF8->GetBytes(toBeEncoded);
for each(Byte v in byteArray)
{
finalString += String::Format("0x{0:X2},", v);
}
string mani = context.marshal_as<string>(finalString);
mani.pop_back(); //To eliminate last ',' from String.
cout << "Manipulated String \n" << mani << endl;
int length = mani.length();
strcpy_s(fast_message,3000,mani.c_str());
Here my motive is to get data in this Format:char fast_message[] = { 0xC3, 0x9D, 0xC3, 0xBF, 0xE2, 0x80, 0x9D, 0x32, 0x30, 0x31, 0x38, 0x31, 0x30, 0x30, 0x39, 0x2D, 0x30, 0x36, 0x3A, 0x34, 0x39, 0x3A, 0x30, 0x39, 0x2E, 0x36, 0x36, 0xC2, 0xB1, 0xC2, 0xB1, 0x1F, 0x6A, 0xC3, 0x8F, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x80, 0x9A, 0x5F, 0x7F, 0x7F, 0xC3, 0x80, 0xE2, 0x82, 0xAC, 0xC3, 0xB4, 0x43, 0x4F, 0x43, 0x55, 0x44, 0x41, 0x4B, 0x4C, 0x32, 0x30, 0x44, 0x45, 0x43, 0x32, 0x30, 0x31, 0xC2, 0xB8, 0x32, 0x39, 0x37, 0x32, 0xC2, 0xB3, 0xC3, 0xB8, 0x05, 0x08, 0x32, 0x3F, 0x49, 0xC3, 0x81, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0x73, 0xE2, 0x80, 0xA2, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x80, 0x9C, 0xC3, 0xB6, 0xE2, 0x82, 0xAC, 0xE2, 0x80, 0x9A, 0x03, 0xC3, 0xA2, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC };
好像我fast_message
在声明中硬编码它可以工作,但当我执行不同的操作或在调试时我得到的值与硬编码它相同。
任何建议为什么它会下溢。