Objective-C ++中的字符串

时间:2010-03-08 20:42:22

标签: objective-c iphone xcode objective-c++

我刚刚将我的代码从Objective-C切换到Objective-C ++。除了两条线外,一切都在游动。

NSString * text1=[[NSString stringWithFormat:@"%.2f",ymax] UTF8String];

这一行抱怨

error: cannot convert 'const char*' to 'NSString*' in initialization

与第一个相关的第二个错误来自以下行:

CGContextShowTextAtPoint(context, 2, 8, text1, strlen(text1));

它抱怨

error: cannot convert 'NSString*' to 'const char*' for argument '1' to 'size_t strlen(const char*)'

ObjC和ObjC ++之间的区别是否有我错过的东西?

3 个答案:

答案 0 :(得分:7)

你想:

const char * text1 = [[NSString stringWithFormat:@"%.2f", ymax] UTF8String];

NSString *text1 = [[NSString stringWithFormat:@"%.2f", ymax] UTF8String];

(注意-UTF8String的返回值。)

答案 1 :(得分:2)

但是你知道你也可以告诉NSString自己画画吗?

NSString *text = [NSString stringWithFormat:@"%.2f", ymax];

//  Send a message to the string to draw itself at the given point with
//  the provided font.
//
[text drawAtPoint:CGPointMake(20.0, 30.0)
         withFont:[UIFont systemFontOfSize:36.0]];

答案 2 :(得分:1)

您不能将char *(UTF8String返回)分配给NSString *。这适用于一般情况;但是,C ++编译器显然对它更加严格。看来你的代码只是运气而已;你想把UTF8String的一位语句向下移动; CGContextShowTextAtPoint(context, 2, 8, text1, strlen([text1 UTF8String]));