1

NSString を C++ 関数に渡そうとしましたが、最初の文字しか取得できません。コードは次のとおりです。

#import <Foundation/Foundation.h>
#import <string>
int main(int argc, const char * argv[])
{

@autoreleasepool {
    NSString* objcString=@"test";
    std::string cppString([objcString cStringUsingEncoding:NSUnicodeStringEncoding]);
    NSLog(@"%@, %s",objcString, cppString.c_str()
          );

}
return 0;
}

それは私に与えます:

2013-03-05 10:22:15.362 TEST[1136:353] test, t

お時間をいただきありがとうございます。よい一日を。

4

4 に答える 4

2

エンコーディングが間違っています。NSUnicodeStringEncodingUTF-16 文字列を返します。文字「t、e、s、t」は 1 バイトに収まるため、UTF-16 では、ゼロ以外のバイトとゼロのバイトで表されます。ゼロはNSLog()、それが文字列の終わりであることを示します。NSUTF8StringEncoding代わりに使用してください。

于 2013-03-05T15:37:13.893 に答える
1

どうですか:

std::string cppString([objcString UTF8String]);
于 2013-03-05T15:33:52.870 に答える
0

私はコードの中で、NSUTF8Encoding代わりにそれを使ってユビキタスにそれを行いNSUnicodeEncodingます。

于 2013-03-05T15:34:13.340 に答える
0

この回答が役立つと思います: NSString を std::string に変換するにはどうすればよいですか?

完全性のために:

NSString *foo = @"Foo";
std::string *bar = new std::string([foo UTF8String]);
于 2013-03-05T15:35:58.123 に答える