这个问题与一个用 ObjectiveC 编写的 iOS 项目有关,该项目使用了一些 C++-Headers。
我正在使用这种方法将消息发送到使用 TCP 的服务器。如您所见,有一个调用的 c++ 方法可以修改字符串以符合特定协议。此字符串被写入流。
-(void) writeToServer:(NSString*) str
{
int len = [str length];
const char* in_ = new char[len];
char* out_ = new char[len];
in_ = [str UTF8String];
len = binary8BitStringTo7BitStringEncoding::encode(in_, len, out_);
uint8_t* test = new uint8_t[len];
for (int i=0; i<len; ++i) {
test[i] = out_[i];
}
[outputStream write:test maxLength:len];
}
我打算使用 cocoaasyncsocket-framework (http://code.google.com/p/cocoaasyncsocket/) 而不是直接处理流。问题是:使用此框架时如何实现相同的功能?
这是使用此框架写入服务器的样子:
NSString *warningMsg = @"Are you still there?\r\n";
NSData *warningData = [warningMsg dataUsingEncoding:NSUTF8StringEncoding];
[sock writeData:warningData withTimeout:-1 tag:WARNING_MSG];
这些是用于编码和解码的两种方法的定义
unsigned int decode(const char* string, unsigned int len, char* out);
unsigned int encode(const char* string, unsigned int len, char* out);
事实上,我正在寻找一种将 char*(编码方法的结果)发送到服务器的方法,但我不确定整个“NSString* 到 char* 到 uint8_t* 到 NSString* 的转换。
使用此框架处理这种转换以达到相同结果的最佳方法是什么?
提前感谢您的回答和所花费的时间!