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

C++文本处理问题:拆分文本记录与实现横向追加内容

C++ 文件横向追加内容与文本记录拆分方案

一、实现文本行横向追加内容的正确方式

你当前代码使用std::ios::app模式会将所有写入内容追加到文件末尾,而非每行对应位置。要实现每行横向追加目标内容,需先读取原文件所有行,拼接对应内容后重新写入文件。

修改后的代码

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

int main() {
    // 读取原文件所有行
    std::vector<std::string> originalLines;
    std::ifstream inFile("C:\\users\\USER\\Documents\\CPPPRoject\\nice.txt");
    std::string line;
    while (std::getline(inFile, line)) {
        originalLines.push_back(line);
    }
    inFile.close();

    // 准备与原行对应的追加内容
    std::vector<std::string> appendContent = {" [CB]", "     4", "     5"};

    // 覆盖写入拼接后的内容
    std::ofstream outFile("C:\\users\\USER\\Documents\\CPPPRoject\\nice.txt", std::ios::out);
    for (size_t i = 0; i < originalLines.size(); ++i) {
        outFile << originalLines[i];
        if (i < appendContent.size()) {
            outFile << appendContent[i];
        }
        outFile << "\n";
    }
    outFile.close();

    return 0;
}

关键注意点

  • 文件路径中的反斜杠需转义为\\,避免被解析为转义字符;
  • 确保追加内容的行数与原文件行数匹配,防止索引越界。

二、将文本记录拆分到文本文件的方法

1. 按行拆分

将原文件每行内容单独写入一个新文件:

#include <fstream>
#include <string>

int main() {
    std::ifstream inFile("main.txt");
    std::string line;
    int fileIndex = 1;
    while (std::getline(inFile, line)) {
        std::ofstream outFile("split_" + std::to_string(fileIndex) + ".txt");
        outFile << line;
        outFile.close();
        fileIndex++;
    }
    inFile.close();
    return 0;
}

2. 按自定义分隔符拆分

以换行符为例拆分记录,将每个独立记录写入单独文件:

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

void splitByDelim(const std::string& content, char delim, std::vector<std::string>& result) {
    std::stringstream ss(content);
    std::string segment;
    while (std::getline(ss, segment, delim)) {
        if (!segment.empty()) {
            result.push_back(segment);
        }
    }
}

int main() {
    std::ifstream inFile("main.txt");
    std::string content((std::istreambuf_iterator<char>(inFile)), std::istreambuf_iterator<char>());
    inFile.close();

    std::vector<std::string> records;
    splitByDelim(content, '\n', records);

    int fileIndex = 1;
    for (const auto& record : records) {
        std::ofstream outFile("record_" + std::to_string(fileIndex) + ".txt");
        outFile << record;
        outFile.close();
        fileIndex++;
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:33:28