函数,使用C++查找文件中的字数

Function to find number of words in a file using C++?

本文关键字:文件 查找 使用 C++ 函数      更新时间:2023-10-16

while (ch != '') { if (isWhiteSpace(contents[i-1]) == 1) countWords++; i++; }

我正试图在文本文件中打印字数。我已经定义了一个函数isWhiteSpace,如果字符是空白,则返回1,否则返回0。我已经测试了isWhiteSpace函数,它工作正常。我把这个代码添加到我的单词计数函数中,我得到了一个分段错误。我在while循环中尝试了多种方法来获取单词计数,他们已经编译好了,只是没有返回正确的数字,所以在while环之外这不是问题。有人能解释我做错了什么吗?非常感谢!

由于ch从未更改,因此循环直到contents[i-1]是您不应该访问的内容时才会结束,因此会出现分段错误。

在另一个stackexchange网站上搜索"字数C++"会得到以下答案:

#include <fstream>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <string>
#include <cstdlib>
int main(int argc, char **argv) {
    if (argc < 2) {
        std::cerr << "Usage: count_words <infile>n";
        return EXIT_FAILURE;
    }
    std::ifstream infile(argv[1]);
    std::istream_iterator<std::string> in{ infile }, end;
    std::cout << "Word count: " << std::distance(in, end);
}

这个解决方案非常好,我认为它值得一点解释。istream_iterator将免费进行空白标记化。因此,您可以通过在范围inend上迭代来手动计数单词。然而,标准算法distance通过计算一个范围内的元素数量来实现这一点。