const char 与 NSString的问题 或者 是其他问题

iOS 码拜 10年前 (2015-05-09) 776次浏览 0个评论
 

求救~  
  总是求救,没办法,本人笨,资料都不太懂找!各位好心人,浏览了就给点建议撒~  省得我每次提问,心都拔凉拔凉的!

NSString *stringToSend = NSStringFromCGPoint(point);
const char *data = [StringToSend UTF8String];
send(CFSocketGetNative(Socket), data,strlen(data)+1,0);

这边输出的结果的形式是这样的:{x,y}
但我要的是m_x_y形式的,我想问一下,要怎么转换?

后来的想法是这样的:
stringToSend = [NSString stringWithFormat:@”m_%i_%i”,point.x,point.y];
const char *data = [StringToSend UTF8String];
send(CFSocketGetNative(Socket), data,strlen(data)+1, 0);

可是这样不能正确的获得point的值?  这是为什么呢?

point.x,point.y 值对么,stringToSend 呢?
stringToSend = [NSString stringWithFormat:@”m_%i_%i”,point.x,point.y];
换成
stringToSend = [NSString stringWithFormat:@”m_%f_%f”,point.x,point.y];
你在xcode中右键单击CGPoint,选择JUMP to defination,你会看到其中两个变量X,y是CGFloat类型,就是浮点型,不是整形,那么在格式化输出的时候不能使用%i,而应该使用%f,
当然如果你希望格式化后结果是整形,那么请使用强制转换,
stringToSend = [NSString stringWithFormat:@”m_%i_%i”,(int)point.x,(int)point.y];
40分
使用
stringToSend = [NSString stringWithFormat:@”m_%f_%f”,point.x,point.y];
会有一个“缺点”,就是小数点后自动补齐6位,比如,如果x=10.0,那么输出结果是10.000000,这个可能不是你想要的,那么把f换成g吧,看看效果,
引用 3 楼 nicktang 的回复:

使用
stringToSend = [NSString stringWithFormat:@”m_%f_%f”,point.x,point.y];
会有一个“缺点”,就是小数点后自动补齐6位,比如,如果x=10.0,那么输出结果是10.000000,这个可能不是你想要的,那么把f换成g吧,看看效果,

谢谢哈~    明天再看看是什么效果  

引用 1 楼 ultrapro 的回复:

point.x,point.y 值对么,stringToSend 呢?

不对  应该就像你楼下说的,是%i的问题, 因为我一直都觉得这样转换是没错的。

引用 3 楼 nicktang 的回复:

使用
stringToSend = [NSString stringWithFormat:@”m_%f_%f”,point.x,point.y];
会有一个“缺点”,就是小数点后自动补齐6位,比如,如果x=10.0,那么输出结果是10.000000,这个可能不是你想要的,那么把f换成g吧,看看效果,

确实是换成%g就行了,谢谢!


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明const char 与 NSString的问题 或者 是其他问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!