C++ファイル固有行の変更/削除を実現
8361 ワード
#include
#include
#include
using namespace std;
// ( ) ,
void delLine(string file_name, string name) {
ifstream in(file_name); //
string data = ""; //
string line, tmp;
while (getline(in, line)) {
istringstream is(line);
is >> tmp;
if (tmp == name)
; // ,
else
data += (line+"
");
}
in.close(); //
ofstream os(file_name); // ,
os << data; //
os.close();
}
// name ,
void changeLine(string file_name, string name, string passward="", string new_name="") {
ifstream in(file_name);
string data = "";
string line, tmp;
while (getline(in, line)) {
istringstream is(line);
is >> tmp;
if (tmp == name) {
if (new_name.empty()) // name
data += name;
else
data += new_name;
data += " ";
is >> tmp;
if (passward.empty()) // password
data += tmp;
else
data += passward;
data += "
";
}
else
data += (line + "
");
}
in.close();
ofstream os(file_name);
os << data;
os.close();
}
個人的には、この戦略に必要な空間が大きすぎて、特にファイルが大きい場合です.他の簡単な方法を知っていたら教えてください.ありがとうございます.