在 node.js 中将缓冲区从 C++ 转换为 UTF-8 字符串
converting buffer from C++ into utf-8 string in node.js
我有用C++编写的服务器端代码,返回一个字符串。客户端代码以快递格式托管。客户端代码具有如下调用终结点:
router.post( '/returnMyStringFromCPlusPlus', ( request, response ) => {
var returnedValue;
try {
var returnBuf = new Buffer.alloc( 512, 0 ); // this will fill buffer with 0
returnedValue= serverSideCode.returnMyStringFromCPlusPlus();
...
}
当我得到这个返回的值时,我看到它是一个缓冲区。我通过测试仔细检查:
console.log(returnedValue instanceof buffer);
这显然是真的。问题是我无法将该缓冲区转换为文本!我试过:
String Decoder:const StringDecoder= require( "string_decoder" (.字符串解码器;
const decoder = new StringDecoder( "utf-8" )
console.log( decoder.write( returnedValue) );
toString((:
console.log(returnedValue.toString('ascii'));
String.fromCharCode
var printMe = String.fromCharCode.apply(null, new Uint16Array(returnCode));
console.log(printMe)
老实说,我从来没有真正幸运地在StackOverFlow上提问,通常最终会回答我自己的问题,但是我很好奇你们中是否有人以前见过这个。我不知道如何解决这个问题,并且已经做了一天多了。
我期待的问题
使用节点版本 11(也尝试了 12 和 13( 使用 x64 版本的 Visual Studio 这应该没关系,但从 C++ 返回的代码实际上是:
#include <string>
string testThis()
{
string testIfThisWorks = "TestIfThisWorks";
return testIfThisWorks;
}
这是在 Windows 10 上
所以我知道这已经快 7 个月了,但我最终还是找到了解决这个问题的方法。我不认为这是理想的,如果我找到一个更好的建议,我仍然愿意接受更好的建议,但我找到了一种黑客的方式来做到这一点。我最终做的是:
- 将参数从客户端节点传入.js传递到服务器端C++
- 更改服务器端的值
- 返回相同的参数。
router.post( '/returnMyStringFromCPlusPlus', ( request, response ) => { var returnedValue; try { var returnBuf = new Buffer.alloc( 512, 0 ); // this will fill buffer with 0 var valueToChange = "valueToChange"; returnedValue= serverSideCode.returnMyStringFromCPlusPlus(valueToChange); ... }
然后,我将在 C 端操作此值并将其作为字符串返回。 <3
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 是否可以从int转换为enum类类型
- 了解 GLM- openGL 中的相机转换
- 将无符号char*转换为std::istream*C++