私は大学のプロジェクトに取り組んでいます。私は、テキストファイルの値を見つけて、それを浮動変数に保存した新しい値に置き換える必要があります。問題の一部は、 (例えば、私は0.00の値を検索することができますが、複数のレコードはそのバランスを取ることができます)。テキストファイル内の行を検索して置き換えるにはどうすればよいですか?
テキストファイルがそうのようにレイアウトされています
USERNAME1
Password1という
AccountNo1
バランス1
Jimmy54
FooBar123
13.37
は...
そして、私のコードの関連部分は次のようになります。
ユーザーが自分のユーザー名を入力し、私たちはこれに重要な部分を取得コードで
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Please enter your username:\n";
cin >> enteredName;
約100行下enteredNameに保管してください質問:
if (c2 == 1)
{
//irrelevant to problem
}
else if (c2 == 2)
{
float convBal;
float deposit;
string newBal;
convBal = ::atof(ball.c_str());
/* Ball is declared higher up in the code and just contains a
value pulled from the text file for the sake of the question
we'll say it has a value of 0.00 */
cout << "How much would you like to deposit?:\n";
cin >> deposit;
newBal= convBal + deposit;
cout << "Your total balance is now: "<< newBal << "\n\n";
}
}
それでは、ここから実行する必要があること(13.37)、ファイルを開くenteredNameためのファイルを検索する(このケースでは、我々はJimmy54を言うよ)、その後、3行のユーザー名の下に値を置き換えるです値はnewBalに保存されています
ありがとうございます!申し訳ありませんが、これは愚かな質問のように聞こえる場合は、私はプログラミングに非常に新しいですし、でも新しいC++の
EDIT#1: ここで私が持っているコードはこれまでのところ、それはenteredNameを発見してから3行を取得しています以下:
if (myfile.is_open())
{
while (getline(myfile, line))
{
if (line.compare(enteredName) == 0)
{
getline(myfile, line); //Password
getline(myfile, line); //Account Number
getline(myfile, line); //Balance
}
}
}
myfile.close();
何か問題が発生した場合は、何かお書きください。 – stark
@starkこれまでの進捗状況で自分の投稿を編集しましたが、変更する必要がある行が見つかりましたが、変更する方法がわかりません –
ファイルを書くことはエディタで操作するようなものではありません行の長さを増減するとファイルの残りの部分が移動しないため、行を "置き換える"ことはできません。固定サイズのデータを上書きすることはできますが、やりたいことを行う最も簡単な方法は、新しい出力ファイルを開いて行をコピーすることです。 – kfsone