Я просто интересно, потому что у меня есть текстовый файл, содержащий STATUS: USERID: ПАРОЛЬ в accounts.txtЗаменить строку в текстовый файл C++
примера будет выглядеть следующим образом:
OPEN: боб: askmehere:
OPEN: джон: askmethere:
LOC K: грабят: robmypurse:
У меня есть пользовательский ввод в мой основной как таковой пользователь может войти на форум 3x еще статус изменится с открытого БЛОКИРОВКА
пример после 3 попыток из Джона
перед:
О.П. EN: боб: askmehere:
OPEN: джон: askmethere:
LOCK: грабят: robmypurse:
после:
OPEN: боб: askmehere:
L OCK: джон: askmethere:
LOCK: грабят: robmypurse:
то, что я сделал это:
void lockUser(Accounts& in){
// Accounts class consist 3 attributes (string userid, string pass, status)
ofstream oFile;
fstream iFile;
string openFile="accounts.txt";
string status, userid, garbage;
Accounts toupdate;
oFile.open(openFile);
iFile.open(openFile);
while(!iFile.eof()){
getline(iFile, status, ':');
getline(iFile, userid, ':');
getline(iFile, garbage, '\n');
if(userid == in.getUserId()){
toupdate.setUserId(in.getuserId());
toupdate.setPassword(in.getPassword());
toupdate.setStatus("LOCK");
break;
}
//here i should update the account.txt how do i do that?
ofile.open(openFile);
ofile<<toupdate.getStatus()<<":"<<toupdate.getUserId()":"<<toupdate.getPassword()<<":"<<endl;
}
Либо прочитать весь файл, и заменить соответствующие слова в памяти, или поместить курсор в файл в нужном месте, и замените там слово. –
Не делайте 'while (! IFile.eof())', потому что, если вы не будете осторожны, он не будет работать так, как вы ожидаете. Причина в том, что флаг 'eofbit' не установлен до * после *, который вы пытаетесь прочитать из-за файла, что приводит к тому, что цикл повторяется один раз для многих. Вместо этого, например, 'while (std :: getline (...))' –