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

标签 javascript c++ node.js buffer

我有用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/

    相关文章:

    javascript - Knockout.js 中 observableArray 对象中计算属性的奇怪行为

    javascript - 无法输入,因为没有通知 Uncaught SyntaxError : Unexpected token)

    node.js - 使用 sqs-consumer Nodejs 的 SQS 队列并行处理消息

    c++ - 在 C++ 中初始化指针数组

    node.js - 使用 couchbase 检查数据库 Node js 中是否已存在用户

    javascript - Webpack 开发中间件未正确提供 bundle.js

    javascript - 使用 jQuery 删除附加的 html?

    javascript - 从字符串中获取第 n 个元素

    c++ - 使用(自定义)GCC 4.x 或 5.x 时,Boost 构建无法通过 C++11 功能检查

    c++ - g++ makefile 错误 : *. o: 没有那个文件或目录