C++对文件处理没有shell等脚本语言方便,但也不是无计可施。
#include <iostream> #include <fstream> #include <sstream> #include <string> using namespace std; int main() { ifstream in("a.txt"); ofstream out("b.txt"); if(!in || !out) { cerr << "Can not open the files!" << endl; return -1; } string line, tmp; while(getline(in, line)) { istringstream iss(line); while(iss >> tmp) { out << tmp << "\t"; } out << endl; } in.close(); out.close(); return 0; }
补充:
文件打开方式选项:
ios::in //供读,文件不存在则创建(ifstream默认的打开方式)
ios::out //供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式)
ios::ate //文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用
ios::app //供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后
ios::trunc //在读写前先将文件长度截断为0(默认)
ios::nocreate //文件不存在时产生错误,常和in或app联合使用
ios::noreplace //文件存在时产生错误,常和out联合使用
ios::binary //二进制格式文件
随机读写文件:
seekg(绝对位置) //绝对移动, //输入流操作
seekg(相对位置,参照位置) //相对操作
tellg() //返回当前指针位置
seekp(绝对位置) //绝对移动 //输出流操作
seekp(相对位置,参照位置) //相对操作
tellp() //返回当前指针位置
参照位置:
ios::beg //相对于文件头
ios::cur //相对于当前位置
ios::end //相对于文件尾