c++ - 来自编程珍珠的字符串函数

标签 c++

这里是来自编程珍珠的字符串函数。

int wordncmp(char *p, char* q)
{   int n = k;
    for ( ; *p == *q; p++, q++)
        if (*p == 0 && --n == 0)
            return 0;
    return *p - *q;
}

int sortcmp(char **p, char **q)
{   return wordncmp(*p, *q);
}

char *skip(char *p, int n)
{   for ( ; n > 0; p++)
        if (*p == 0)
            n--;
    return p;
}

我不明白 sortcmp() 的作用是什么?并且 skip 函数是否从 char *p 或什么返回非 null 终止部分? 请解释。

最佳答案

这完全是猜测,因为我没有这本书的拷贝,但看起来这些函数用于处理非常规字符串格式,该格式由一系列由空字符分隔的“单词”组成。

  • wordncmp() 比较前 k 个单词,其中 k 大概是调用函数之前要设置的全局变量。<
  • sortcmp() 接受指向字符串指针的指针,并且大概是在使用 qsort() 对字符串指针数组进行排序时用作比较器。
  • skip() 跳过字符串中的 n 个单词。

在 C++ 中,您最好使用标准字符串和算法库来执行此类操作;很少有充分的理由来处理指针和非常规的字符串表示。

关于c++ - 来自编程珍珠的字符串函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3370480/

相关文章:

c++ - 没有匹配的函数 - ifstream open()

c++ - 如何为系统驱动器、文件夹和文件创建浏览器

c++ - strtok 读取文件时出现段错误

c++ - linux下如何同时运行多个shell命令

c++ - 与 Windows(和 Windows Embedded CE)中的 CLOCK_MONOTONIC 类似的功能

c++17:至少必须替换哪些版本的全局运算符 new/delete 以覆盖所有情况?

c++ - 为什么 Windows API 根据我的日志记录语句响应错误代码

c++ - 检查失败 : 1 == NumElements() (1 vs. 2)必须有一个元素张量

c++ - 使用 CGAL 库构建 Visual C++ 应用程序

c++ - 测试未定义的行为