Java和c++ -字符串

Java and C++ - String

本文关键字:字符串 c++ Java      更新时间:2023-10-16

我有一个Java客户端和c++服务器。所有的值都以字节数组的形式发送。数字值可以很好地接收,但是在c++中存储在字符数组中的字符串值在值的末尾有特殊字符,如new page或new line换行。有人能提出解决这个问题的办法吗?

是-使用谷歌协议缓冲区序列化/反序列化。它是一个开源、稳定、易于使用的跨平台软件包。

你是如何序列化/反序列化的?您应该决定一个编码(例如ASCII),然后将字符串的长度首先写入int,这样服务器就可以读取int并知道要读取字符串的多少字节。

一旦它读取了字节,它只需要在char*后面加上一个''来终止数组中的字符串。

根据你在Java中使用的字符串,你可以这样做:

writeInt(string.length());
writeBytes(string.getBytes("ASCII"));

在你的c++服务器中,你会做相反的事情

1)确保服务器代码在字节级别上符合您的协议。

2)确保客户端代码在字节级别上符合您的协议。

3)如果你已经做了1和2,但你仍然有问题,你的协议被破坏了。最有可能的是,它没有正确指定服务器如何指定字符串结束的位置,以及客户端如何建立字符串结束的位置。