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

