2011-01-21 10 views
0

まず第一に、ImはC++にあまりにも良くありません。だから私は簡単にそれを取ってください。 パスワードを変更しようとしましたが、テキストファイル内の特定のパスワードのみを変更したいだけです。しかし、テキストファイルに新しいパスワードが1つだけ存在するように書き直されると、ファイル全体を再書き込みしました。:(添付が容易であるがC++ヘルプ...テキストファイルを更新しますか?

USER.TXT

admin openmyacc 
guest imguest12 


void Passchange() 
{ 
    string tempass; 
    system("cls"); 
    cout<<"enter current password: "; 
    cin>>tempass; 
    if(tempass==inpass) 
    { 
     cout<<"utility to change password stored in file\n"; 
     cout<<"CHANGE PASS TO: "; 
     cin>>user; 
     ofstream Passfile("user.txt", ios::out); 
     Passfile<<user; 
     Passfile.close(); 
     cout<<"password successfully changed"; 
     getch(); 
     main(); 
    } 

答えて

1

は、ファイルの途中でテキストを変更する簡単な方法は、ありません。あなたが必要となります古いエントリを検出し、新しいデータとそれを交換しながら、それを古いファイルを読み込み、再書き込みをする。

0

を私はあなたがそれぞれのユーザー名に1行を使用してファイルに"username<space>password"形式を持っていることを前提と?

ここ私の提案です:linke tを動作させる関数を書く彼: 配列

  • で特定のユーザーのための

    1. 読むループ内のファイルのすべてのエントリと 文字列(好ましくは2次元の配列)の配列にコピーし
    2. 検索ユーザーの場合配列
    3. クリア
    4. が バックファイルへのループで配列全体を書き出したファイルに変更にパスワード を発見された