[英]Issue when convert string to NSString
我想將C ++字符串轉換為NSString
以在iOS應用中使用。
但是對於帶有奇怪后綴格式的C ++字符串,有時結果為nil。
例如:C ++字符串“但實際上原來是您!$ \\ 211 /”在轉換為NSString
之后將產生nil。
mainFile.open(filePath, std::ios::binary);
mainFile.seekg(current_offset);
char buffer[size];
mainFile.read(buffer, sizeof buffer);
string tempString = string(buffer)
NSString *testString = [NSString stringWithCString:tempString.c_str() encoding:NSUTF8StringEncoding];
當cout << tempString
我仍然讀取帶有奇怪代碼后綴的字符串內容,但在轉換為NSString
后會產生nil
有人知道怎么修這個東西嗎?
為什么還要打擾C ++部分呢?
NSString *filePath = @"/path/to/some/file.txt";
NSFileHandle *input = [NSFileHandle fileHandleForReadingAtPath:filePath];
[input seekToOffset:current_offset];
NSData *bytes = [input readDataOfLength:size];
if (bytes)
{
NSString *str = [[NSString alloc] initWithData:bytes encoding:NSUTF8StringEncoding];
}
else
{
NSLog(@"Unable to read from file");
}
如果str
為nil
,則意味着該數據未編碼為UTF8,因此您需要查找數據的實際編碼方式。如果它來自Windows計算機,請嘗試NSWindowsCP1251StringEncoding
或NSISOLatin1StringEncoding
。
該代碼指定了編碼NSUTF8StringEncoding
但是該字符串的字節值不是有效的UTF-8字符。 選擇與字符串匹配的編碼。
嘗試使用NSISOLatin1StringEncoding
的編碼:
8位ISO Latin 1編碼。
如果您來自Mac環境,則NSMacOSRomanStringEncoding
可能是要考慮的另一種編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.