gpt4 book ai didi

ios - 如何将 NSInputStream 转换为 NSString 或如何读取 NSInputStream

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:22:36 26 4
gpt4 key购买 nike

我正在尝试将输入流转换为字符串。我尝试转换的输入流是 NSURLRequest.HTTPBodyStream,显然 httpbody 设置为 null 并在您发出请求后替换为流。我该怎么做呢?这是我目前所拥有的:

#define MAX_UTF8_BYTES 6
NSString *utf8String;
NSMutableData *_data = [[NSMutableData alloc] init]; //for easy 'appending' bytes

int bytes_read = 0;
while (!utf8String) {
if (bytes_read > MAX_UTF8_BYTES) {
NSLog(@"Can't decode input byte array into UTF8.");
break;
}
else {
uint8_t byte[1];
[r.HTTPBodyStream read:byte maxLength:1];
[_data appendBytes:byte length:1];
utf8String = [NSString stringWithUTF8String:[_data bytes]];
bytes_read++;
}
}

当我打印字符串时,它要么总是空的,要么只包含一个字符,甚至不打印空值。有什么建议吗?

最佳答案

明白了。我尝试访问的流尚未打开。即便如此,它还是只读的。所以我复制了一份,然后打开了它。但这仍然不对,我一次只读一个字节(一个字符)。所以这是最终的解决方案:

NSInputStream *stream = r.HTTPBodyStream;
uint8_t byteBuffer[4096];

[stream open];
if (stream.hasBytesAvailable)
{
NSLog(@"bytes available");
NSInteger bytesRead = [stream read:byteBuffer maxLength:sizeof(byteBuffer)]; //max len must match buffer size
NSString *stringFromData = [[NSString alloc] initWithBytes:byteBuffer length:bytesRead encoding:NSUTF8StringEncoding];

NSLog(@"another pathetic attempt: %@", stringFromData);
}

关于ios - 如何将 NSInputStream 转换为 NSString 或如何读取 NSInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41292779/

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