我的程序需要兩個參數,第一個參數是要更改的名稱,第二個參數是更改它的名稱。從文本文件改變一行中的一個字段,存儲到數組中比重新寫入文件
執行後,我的文本文件丟失了第二行,它假設從5月更改爲MayMay。我不確定我的if else
聲明是否有問題,或while(!file.fail)
有問題。
這是我的原始文本文件。
user; pass; 1234; John; 1111
user1; pass1; 2345; May; 2222
user2; pass2; 3456; Mary; 3333
user3; pass3; 4567; Andy; 4444
hr; hr; 5678; Jonathan; 5555
admin; admin; 6789; Aili; 6666
user10; pass10; 7890; eggy; 9999
user11; pass11; 9807; Mary; 7777
這是我的程序執行後的輸出文本文件。
user; pass; 1111; John;
user2; pass2; 3333; Mary;
user3; pass3; 4444; Andy;
hr; hr; 5555; Jonathan;
admin; admin; 6666; Aili;
user10; pass10; 9999; eggy;
user11; pass11; 7777; Mary;
pass11; 7777; Mary;
這是我的代碼:
bool Employee::changeName(string nnn, string mmm)
{
int i = 0;
ifstream file("login1.txt"); // to open the file
string name, empty, empty2, empty3, empty4; // fusername is use to store the first parameter in textfile,empty is use to store the rest of the line after the ';'
string store[100]; // initialize a array to store textfile contents
while (!file.fail()) // loop if file didn't fail
{
getline(file, empty, ';'); // use ; as delimiter
getline(file, empty2, ';'); // use ; as delimiter
getline(file, empty3, ';'); // use ; as delimiter
getline(file, name, ';'); // use ; as delimiter
getline(file, empty3); // use line end as delimiter, and to skip the rest of the information
string add = ""; //initialize add string to nothing when it loops
if(name != nnn) // to check if the username in textfile do not match the user input name
{
add += empty + ';' + empty2 + ';' + empty3 + ';' + name + ';' + empty4; // adds back the username and rest of the line together back
store[i] = add; // store into an array
cout << "i is: " << i << endl; // debugging.
cout << "store array[] = " << store[i] << endl; // debugging..
i++;
}
else if(name == nnn)
{
add += empty + ';' + empty2 + ';' + empty3 + ';' + mmm + ';' + empty4; // adds back the name and rest of the line together back
store[i];
cout << "i is: " << i <<endl; // debugging.
cout << "store array[] = " << store[i] << endl; // debugging..
i++;
}
else{}
}
remove("login1.txt"); //remove the textfile
ofstream pwd2_file ; // initilize a outputstream textfile
pwd2_file.open("login1.txt"); // create a new file call login1.txt
for (int x = 0; x < i; x++)//for loop to store store[] array into login1.txt
{
pwd2_file << store[x] << endl; // storing into textfile
}
pwd2_file.close(); // close the output stream
}
你的權利,改變,當我看到它感謝:D –