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

C++如何在整数前拆分字符串 实现TXT文件数据格式转换

需求实现可行性说明

该需求完全可实现,核心实现逻辑为通过字符类型判断识别整数位置,按要求插入换行符完成拆分即可。

核心实现思路
  • 引入<cctype>头文件调用isdigit()函数,可快速识别字符是否为数字
  • 遍历已拼接完成的无空白buf字符串,遇到数字字符时按拆分规则插入换行符
  • 处理完成后的字符串直接写入新文件即可得到目标格式
修改后可直接运行的完整代码
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cctype> // 新增头文件用于判断数字字符

using namespace std;

int main () {
    string fileName;
    cout << "Enter the name of the file to open: ";
    cin >> fileName;

    ifstream old_file(fileName + ".txt");
    ofstream new_file("ksiazka_adresowa_nowy_format.txt");

    vector <string> friendsData;
    string buf;
    string data;

    // 原有读取逻辑不变
    while(getline(old_file, data)) {
        friendsData.push_back(data);
    }
    for(int i=0; i<friendsData.size() ; ++i) {
        buf += friendsData[i] + '|';
    }

    // 新增拆分逻辑:在整数前插入换行符实现拆分
    string processed_buf;
    for (int i = 0; i < buf.size(); ++i) {
        // 判断当前字符是数字,且不是第一个字符时先插入换行
        if (isdigit(buf[i]) && i != 0) {
            processed_buf += '\n';
        }
        processed_buf += buf[i];
        // 如果你需要的是整数后面拆分的效果,注释掉上面的拆分判断,启用下方逻辑即可:
        // if (isdigit(buf[i]) && i+1 < buf.size() && !isdigit(buf[i+1])) {
        //     processed_buf += '\n';
        // }
    }

    // 写入处理后的内容
    new_file << processed_buf;

    old_file.close();
    new_file.close();

    return 0;
}
代码说明
  • 代码默认实现了整数前位置拆分的逻辑,可根据实际需求切换为整数后拆分的逻辑
  • 已兼容连续多位数的整数识别,不会把同一个整数拆分为多行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 16:27:00