将 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

将 char 转换为 int 的奇怪错误(目标 C)

从NSString获取一个char并转换为int

如何在char数组和NSString之间进行转换

将 Plist (NSString) 解析为 NSDictionary

如何将 NSString 转换为 NSNumber