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
相关产品推荐
相关产品推荐

