将 char* 解析为 NSString 在 Objective-C 的第一个新行处停止
Posted
技术标签:
【中文标题】将 char* 解析为 NSString 在 Objective-C 的第一个新行处停止【英文标题】:Parsing char* to NSString stops at first new line in Objective-C 【发布时间】:2017-08-29 16:56:49 【问题描述】:我正在尝试将从库返回的字符串转换为 NSString 以与单独的 Objective-C API 一起使用,但是每当我将 char*
解析为 NSString
时,它似乎停止在第一行.
示例:
char *tst = "POST /servers HTTP/1.0\r\nContent-Type: test/json\r\nContent-Length:10\r\n\r\n1234567890";
NSLog(@"(TEST) : TST = %@", [NSString stringWithUTF8String:tst]);
输出:
<Notice>: (TEST) : TST = POST /servers HTTP/1.0
我不确定这是否实际上没有解析超过第一个换行符,或者 NSLog 只是没有显示超过第一个换行符的字符串的其余部分。这就是我想要弄清楚的。
编辑:
我也尝试过只用
\n
替换\r\n
实例,没有任何变化。
示例:
char *tst = "POST /servers HTTP/1.0\r\nContent-Type: test/json\r\nContent-Length:10\r\n\r\n1234567890";
NSString *tstStr = [NSString stringWithUTF8String:tst];
NSLog(@"(TEST) : TST = %@", [tstStr stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\n"]);
输出:
<Notice>: (TEST) : TST = POST /servers HTTP/1.0
【问题讨论】:
您的代码运行良好。它显示了接下来的三行日志。 【参考方案1】:您的代码应该可以工作。在查看 Xcode 中的调试日志时,我刚刚尝试过,它对我有用。
请注意,您实际上会在NSLog
输出中获得两行新行,一行用于\r
,另一行用于\n
。
【讨论】:
原来的问题是我对日志进行 grep 的方式丢失了剩余的行。我现在觉得自己很愚蠢。以上是关于将 char* 解析为 NSString 在 Objective-C 的第一个新行处停止的主要内容,如果未能解决你的问题,请参考以下文章
Objective C - 以十六进制格式将 char[] 转换为 NSString