私のプログラムは 2 つのパラメーターを受け取ります。最初のパラメーターは変更する名前で、2 番目のパラメーターは変更後の名前です。
実行後、5 月から MayMay に変更されたと思われる 2 行目がテキストファイルにありません。私の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
}