You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++程序生成输出文件为空,请求问题排查

问题排查与解决

核心原因:字符串匹配不成立

你的输入文件第一列是带双引号的"1",但代码里判断col1 == "1"——实际getline读取到的col1值是"\"1\""(包含首尾双引号的完整字符串),导致条件永远不满足,自然不会向输出文件写入任何内容。

修复方案

方案1:去除字符串首尾的双引号后再判断

对读取到的列值做简单处理,剥离首尾双引号:

// 处理col1,去掉首尾双引号
if (!col1.empty() && col1.front() == '"' && col1.back() == '"') {
    col1 = col1.substr(1, col1.size() - 2);
}
if (col1 == "1") {
    // 写入逻辑
}

方案2:直接匹配带双引号的字符串

修改判断条件,直接匹配读取到的原始值:

if (col1 == "\"1\"") {
    // 写入逻辑
}

其他潜在问题点

  • 文件路径/权限问题:确认输入输出文件的路径是否正确,当前程序是否有读写该路径的权限。可以添加文件打开检查,快速定位问题:
if (!inputFile.is_open()) {
    std::cerr << "无法打开输入文件" << std::endl;
    return 1;
}
if (!outputFile.is_open()) {
    std::cerr << "无法打开输出文件" << std::endl;
    return 1;
}
  • 行尾格式兼容问题:如果输入文件是Windows下生成的(行尾为CRLF),在类Unix系统中可能导致getline读取异常,但这种情况概率较低。

修复后完整代码示例

#include <fstream>
#include <sstream>
#include <iostream>
#include <string>

int main() {
    std::ifstream inputFile("/Users/a0p0ieu/Desktop/specRules/list.csv");
    std::ofstream outputFile("/Users/a0p0ieu/Desktop/specRules/output_spec.txt");
    std::string line;

    if (!inputFile.is_open()) {
        std::cerr << "无法打开输入文件" << std::endl;
        return 1;
    }
    if (!outputFile.is_open()) {
        std::cerr << "无法打开输出文件" << std::endl;
        return 1;
    }

    while (getline(inputFile, line)) {
        std::istringstream iss(line);
        std::string col1, col2, col3;
        getline(iss, col1, ',');
        getline(iss, col2, ',');
        getline(iss, col3, ',');

        // 剥离各列首尾的双引号
        auto stripQuotes = [](std::string& s) {
            if (!s.empty() && s.front() == '"' && s.back() == '"') {
                s = s.substr(1, s.size() - 2);
            }
        };
        stripQuotes(col1);
        stripQuotes(col2);
        stripQuotes(col3);

        if (col1 == "1") {
            outputFile << "\"" << col2 << "\": {\n";
            outputFile << "    \"#" << col3 << "\": \"onix_notificationtype.values[].value\"\n";
            outputFile << "},\n";
        }
    }

    inputFile.close();
    outputFile.close();
    return 0;
}

内容的提问来源于stack exchange,提问作者Ankita Prasad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:17:33