2017-01-09 5 views
0

に入力を配置していないと、ここに私のコードです:ここはifstreamコードは変数

#include <iostream> 
#include <fstream> 
#include <iomanip> 
#include <string> 
using namespace std; 

int main() 
{ 

    //variable init 
    ifstream inFile; 
    ofstream outFile; 
    string toPrint, fileName; 
    string var; 
    cout << "Enter your save file: "; cin >> fileName;//asks the file name 
    cout << "Searching..."<<endl; 

    string fileLocation = "C:\\Users\\CraftedGaming\\Documents\\" + fileName + ".txt";//locates it 
    inFile.open(fileLocation.c_str()); 
    if(!inFile){//checks if the file is existent 
     cerr << "Error can't find file." << endl; 
     outFile.open(fileLocation.c_str()); 
     outFile << "Player House: Kubo"<<endl; 
     outFile.close(); 
    } 
    cout << "Loaded." << endl; 

    inFile.ignore(1000, ':'); inFile >> var; //gets the string and places it in variable named var 
    cout << var<<endl; 

    //replaces var 
    cout << "Enter a string: "; 
    cin >> var; 

    //saving 
    outFile.open(fileLocation.c_str()); 
    outFile << "Player House: " << var; 
    inFile.close(); 
    outFile.close(); 
} 

問題は、私は「久保」という名前のプレイヤーの家を取得し、「VAR」という名前の変数に置くことができないということです。それは自分の文書にファイルを作成することを管理し、置換varセクションの変数を変更することを管理します。

+0

同時に同じファイルを2回開くと、危険をはらんでいます。 – user4581301

+0

本当にありません。私はこれを行い、以前のファイルには何の影響も与えませんでした。私はファイルを再オープンしませんでした。 – CraftedGaming

+1

'outFile'を開く前に' inFile'を閉じないでください。 'outFile'を開いても成功したかどうかはチェックしません。 –

答えて

0

私が理解したところでは、ファイルを同時に読み書きする必要があります。私は、ファイルが空であるかどうかを判断するためにtellg()を使用

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() { 
    string fileName; 
    cout << "Enter your save file: "; 
    cin >> fileName; 
    string filePath = "C:\\Users\\CraftedGaming\\Documents\\" + fileName + ".txt"; 
    fstream file(filePath, fstream::in | fstream::out | fstream::trunc); // open modes to read and write simultaneously 
    string var; 
    if (file.tellg() == 0) 
     file << "Player House: Kubo\n"; 
    file.seekg(14); 
    file >> var; 
    cout << var << endl; 
    file.close(); 
    return 0; 
} 

このコードを試してみてください、あなたはまた、

file.peek() == ifstream::traits_type::eof(); 
で行くことができる
+0

16行目に2つのエラーが表示されます 1.エラー(アクティブ)2つ以上のオペレータ "=="がこれらのオペランドと一致しています: 2.エラー\t C2666 'std :: fpos <_Mbstatet> :: operator ==': 3オーバーロードに似たコンバージョンがある – CraftedGaming

+0

@CraftedGamingは私のために働く[ここ](http://coliru.stacked-crooked.com/a/5998c73b5bd42f51) – Shreevardhan

+0

どのIDEを使用していますか?私はVisual Studio 2015を使用しています。file.peek()を使用してみましたが、ファイル名を入力した後に空の画面が表示されました。 – CraftedGaming

関連する問題