gpt4 book ai didi

javascript - 将缓冲区从C++转换为node.js中的utf-8字符串

转载 作者:行者123 更新时间:2023-12-02 10:37:56 25 4
gpt4 key购买 nike

我有用C++编写的返回字符串的服务器端代码。客户端代码托管在express中。客户端代码具有如下调用端点:

router.post( '/returnMyStringFromCPlusPlus', ( request, response ) => { 
var returnedValue;
try {
var returnBuf = new Buffer.alloc( 512, 0 ); // this will fill buffer with 0
returnedValue= serverSideCode.returnMyStringFromCPlusPlus();
...
}

当我返回这个returnValue时,我看到它是一个缓冲区。我通过测试进行了仔细检查:
     console.log(returnedValue instanceof buffer);

显然返回true。问题是我无法将该缓冲区输入文本!我试过了:

字符串解码器:
const StringDecoder = require(“string_decoder”).StringDecoder;
        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个月后,但是我最终还是回过头来找到解决该问题的方法。我不认为这是理想的选择,但如果找到建议,仍然可以接受更好的建议,但是我发现这样做有些拙劣。我最终要做的是:

  • 从客户端node.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

    关于javascript - 将缓冲区从C++转换为node.js中的utf-8字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59400765/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com