C#键:从字符串到字符串

时间:2018-07-12 21:26:31

标签: bond

Bond C# manual中,它指出以下内容:

  

以下更改将破坏电线的兼容性,因此不建议使用:

     
      
  • 添加或删除必填字段
  •   
  • 字段类型的不兼容更改(上面未涵盖的任何类型更改);例如:将int32转换为字符串,将字符串转换为wstring
  •   
  • ...
  •   

但这并不能解释原因。这里的用例是,我使用的是将C#应用程序与C ++后端连接的Bond。该字段当前是一个字符串。我想将其更改为wstring。手册指出,C#字符串可以处理C ++字符串和C ++ wstring。因此,为什么我不能只将字段类型从字符串更改为wstring?为什么这种断线兼容?

1 个答案:

答案 0 :(得分:0)

在Bond的二进制格式中,字符串是UTF8编码的(没有BOM),而字符串是UTF16-LE编码的。如果要将字段从字符串切换为wstring,则读取端将尝试将UTF8数据解释为UTF16-LE数据。这两种编码互不兼容,因此从字符串到wstring的字段类型更改是一个重大更改。

请注意,手册中指出“例如C#string可以代表债券类型 stringwstring”。它没有说任何有关C ++类型的信息。在C#和C ++上使用Bond时,有三个类型的系统:Bond,C#和C ++。

如果在C ++方面,您想使用类似于std::wstring的方式来将字段存储在内存中,请看一下将Custom type mappingstring concept一起使用。