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

如何在C++中按文件原有格式读取并输出数字

解决方案

要同时实现读取整数进行处理并保留原文件格式输出,你可以结合按行读取和字符串流解析的方式,具体步骤如下:

  1. 按行读取文件内容,保留每行的结构;
  2. 对每行使用字符串流提取整数,转为int类型以便处理;
  3. 存储每行的整数列表,处理完成后按原行结构输出。

示例代码

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

void processFile(const std::string& path) {
    std::fstream fs(path);
    if (!fs.is_open()) {
        std::cerr << "无法打开文件" << std::endl;
        return;
    }

    // 存储每行的整数列表
    std::vector<std::vector<int>> lineNumbers;
    std::string line;

    // 读取每行并解析整数
    while (std::getline(fs, line)) {
        std::vector<int> nums;
        std::istringstream iss(line);
        int num;
        while (iss >> num) {
            // 这里可以对整数进行处理,比如排序、计算等
            nums.push_back(num);
        }
        lineNumbers.push_back(nums);
    }

    // 按原格式输出
    for (const auto& nums : lineNumbers) {
        for (size_t i = 0; i < nums.size(); ++i) {
            if (i != 0) {
                std::cout << " "; // 数字间用空格分隔
            }
            std::cout << nums[i];
        }
        std::cout << std::endl; // 每行结束换行
    }
}

// 调用示例
int main() {
    processFile("your_file_path.txt");
    return 0;
}

代码说明

  • 按行读取:使用std::getline读取每行,确保保留原有的换行结构;
  • 字符串流解析:用std::istringstream将每行字符串拆分为整数,既可以获取int类型的值进行处理,又能保留每行的数字数量;
  • 格式还原:输出时按每行的整数列表依次打印,数字间用空格分隔,每行结束后换行,与原文件格式一致。

注意事项

如果原文件中数字间存在多个空格或制表符,上述代码会将其替换为单个空格。若需要完全保留原始分隔符的格式,需要额外记录每行的分隔符位置,这会增加代码复杂度,一般场景下上述方案已足够满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:20:41