/ / Problem beim Konvertieren eines Strings in NSString - ios, Objective-c, Nsstring, Objective-C ++

Problem beim Konvertieren der Zeichenfolge in NSString - ios, objective-c, nsstring, objective-c ++

Ich möchte eine C ++ - Zeichenkette umwandeln NSString zur Verwendung in iOS-App.

Aber manchmal ist das Ergebnis für C ++ - String mit einem merkwürdigen Suffixformat gleich null.

Zum Beispiel: eine C ++ - Zeichenfolge ", aber tatsächlich stellte sich heraus, dass Sie es sind! $ 211 /" wird nach der Konvertierung in nil produzieren NSString.

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];

Wann cout << tempString Ich lese den String-Inhalt immer noch mit einem seltsamen Code-Suffix, aber er erzeugt nach der Konvertierung nichts NSString

Weiß jemand, wie man das repariert?

Antworten:

1 für die Antwort № 1

Warum sollte man sich überhaupt mit dem C ++ - Teil beschäftigen?

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");
}

Ob str ist nilDann bedeutet dies, dass die Daten nicht als UTF8 kodiert sind. Sie müssen also herausfinden, in welcher Kodierung sich Ihre Daten tatsächlich befinden. Wenn sie von einem Windows-Computer stammen, versuchen Sie es NSWindowsCP1251StringEncoding oder NSISOLatin1StringEncoding.


0 für die Antwort № 2

Der Code gibt die Kodierung an NSUTF8StringEncoding Der String hat jedoch einen Byte-Wert, der kein gültiges UTF-8-Zeichen ist. Wählen Sie eine Kodierung aus, die der Zeichenfolge entspricht.

Versuchen Sie eine Kodierung wie NSISOLatin1StringEncoding:

8-Bit-ISO-Latin-1-Kodierung.

NSMacOSRomanStringEncoding Möglicherweise ist eine andere Kodierung zu berücksichtigen, wenn Sie aus einer Mac-Umgebung stammen.