Objective c NSInteger到const char*

Objective c NSInteger到const char*,objective-c,cgcontext,uiprintpagerenderer,Objective C,Cgcontext,Uiprintpagerenderer,我收到一份(NSInteger)页面索引,需要将其打印在带有 void CGContextShowTextAtPoint( CGContextRef c, CGX, CGY, 常量字符*字符串, 尺寸和长度 ); 如何获取const char*字符串,并且不要忘记该字符串的长度 我倾向于先将整数转换为字符串,然后使用incode:NSMacOSRomanStringEncoding执行cstringusingencode:NSMacOSRomanStringEncoding这不是最优雅的方式 为

我收到一份
(NSInteger)页面索引
,需要将其打印在带有

void CGContextShowTextAtPoint(
CGContextRef c,
CGX,
CGY,
常量字符*字符串,
尺寸和长度
);

如何获取
const char*字符串
,并且不要忘记该字符串的长度

我倾向于先将整数转换为字符串,然后使用incode:NSMacOSRomanStringEncoding执行
cstringusingencode:NSMacOSRomanStringEncoding
这不是最优雅的方式

为了完整起见,下面是代码

const char *pageIndexString = [[NSString stringWithFormat:@"%d", pageIndex] cStringUsingEncoding:NSMacOSRomanStringEncoding];
CGContextShowTextAtPoint(CGContextRef, CGFloat x, CGFloat y, pageIndexString, strlen(pageIndexString));
试试这个:

NSString *tmp = [NSString stringWithFormat:@"%ld", pageIndex];
const char *str = [tmp UTF8String];
size_t length = [tmp length];
试试这个:

NSString *tmp = [NSString stringWithFormat:@"%ld", pageIndex];
const char *str = [tmp UTF8String];
size_t length = [tmp length];

基本上我就是这么做的。。。不优雅,肮脏,丑陋。为了完整起见,我编辑了问题并粘贴了代码。@user1765406可能是。怎么了?还有,为什么要使用Mac-Roman编码?是的,我很惊讶我不得不使用
MacRoman
,但这正是我从[使用Quartz 2D Reference)。如果我做错了,请纠正我,如果我可以绘制UTF文本…那会更好
%ld
应该是
NSInteger
@user的格式说明符:另一种解决方案更难看,包括
sprintf()
calloc()
.odly够了,我的编译器没有抱怨%d-或者是因为iOS和OS-X的不同,这基本上就是我所做的…不优雅,不讨人喜欢,不丑陋。为了完整性,我编辑了这个问题并粘贴了代码。@user1765406可能是的。这有什么问题吗?还有,你为什么使用Mac Roman编码?是的,我对它感到非常惊讶事实上,我不得不使用
MacRoman
,但这或多或少是我从[使用Quartz 2D Reference)。如果我做错了,请纠正我,如果我可以绘制UTF文本…那会更好
%ld
应该是
NSInteger
@user的格式说明符:另一种解决方案更难看,包括
sprintf()
calloc()
.odly够了,我的编译器没有抱怨%d,或者这是因为iOS和OS-X的差异