【问题标题】:Read string line-by-line (in Objective-C) [duplicate]逐行读取字符串(在Objective-C中)[重复]
【发布时间】:2011-07-19 17:38:29
【问题描述】:

什么是逐行读取字符串的快速简单的方法?

我目前正在使用 Xcode,但欢迎使用任何语言的解决方案。

作为参考,我更愿意创建一个函数,让我可以像从 C# 中的文件中读取行一样读取它:

lineString = handle.ReadLine();

【问题讨论】:

  • Xcode 不是一种语言——它只是一个 IDE——它支持多种语言的编程,例如 Objective C、Objective C++、C、C++、asm 等。
  • @Paul R:好点。但是,我从未暗示 Xcode 是一种语言。不过,我已经根据您的建议更改了标题。 ;-)
  • 这是一行:“我目前正在使用 Xcode,尽管欢迎使用任何语言的解决方案。”这促使我发表评论。 ;-)
  • @Paul R:呵呵,我明白了。好吧,为了纯粹主义:技术上,它并没有声称 Xcode 是一种语言。我只是声明我欢迎任何语言的建议,即使我使用的是 Xcode(这可能会让人们相信我只是在寻找 C/Objective-C 代码)。但是好的...让我们专注于解决方案 :-) 感谢您的 cmets!

标签: objective-c xcode string stringbuilder readline


【解决方案1】:

答案没有解释如何逐行读取LARGE文本文件。在 Objective-C 中没有很好的解决方案来读取大型文本文件而不将它们放入内存(这并不总是一种选择)。

在这些情况下,我喜欢使用 c 方法:

FILE* file = fopen("path to my file", "r");

size_t length;
char *cLine = fgetln(file,&length);

while (length>0) {
    char str[length+1];
    strncpy(str, cLine, length);
    str[length] = '\0';

    NSString *line = [NSString stringWithFormat:@"%s",str];        
    % Do what you want here.

    cLine = fgetln(file,&length);
}

请注意 fgetln 不会保留您的换行符。此外,我们将 str 的长度 +1,因为我们想为 NULL 终止腾出空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多