You need to enable JavaScript to run this app. C++读取enable1.txt筛选单词输入参数后无输出问题求助
优惠活动
大模型
产品
解决方案
定价
更多

C++读取enable1.txt筛选单词输入参数后无输出问题求助

问题排查与解决方案

核心问题根因

你遇到的无输出问题由两个低级错误导致:

  • 构造函数传参顺序颠倒:你定义的Words类构造函数形参顺序为Words(int max, int min),但main函数中实例化对象时传入的参数顺序是Words words(min, max),这会使类内部的minlen被赋值为你输入的最大长度,maxlen被赋值为你输入的最小长度,当输入的min小于max时,长度筛选条件永远不成立,符合要求的单词计数count为0,pick_word方法直接返回空字符串,因此看不到输出。
  • 文件名带有多余空格:代码中两处打开文件的路径都写为"enable1.txt ",txt后缀后多了一个空格,如果你本地的词典文件名是无空格的enable1.txt,会直接导致文件打开失败,单词计数同样为0,返回空值。

此外你当前使用的while (!fin.eof())读取逻辑存在冗余,会多读一次空内容,但不属于本次无输出的核心原因。

修复方案

按以下步骤修改代码即可正常运行:

  1. 修正参数传递逻辑:将Words类的构造函数定义改为符合常规习惯的参数顺序:
// 修改前:Words(int max, int min)
Words(int min, int max)
{
    minlen = min;
    maxlen = max;
    count_candidates();
    load_words();
}
  1. 移除文件名后的多余空格,将两处打开文件的代码修改为:
fin.open("enable1.txt");
  1. (可选优化)调整文件读取逻辑,避免eof判断的冗余问题:
// 把原来的while (!fin.eof()) + getline逻辑替换为以下写法
string word;
while (getline(fin, word)) {
    if (word.length() >= minlen && word.length() <= maxlen) {
        count++; // 统计数量时的逻辑,加载单词时对应修改为存入数组即可
    }
}

内容的提问来源于stack exchange,提问作者WyRm ACEN H08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 22:06:04