質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • C++

    4414questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

c++で入力されたファイルが元のコードがコメントアウトされると消えてしまう

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 705

reotantan

score 251

最初にかいたコードをコメントアウトしてこのコードを同じファイルで実行しようとしたんですが、ファイルの中身は消えてしまいました。
//
//ifstream thisfile("Player.txt");
//
//    int id;
//    string name;
//    double money;
//
//    while(thisfile>>id>>name>>money){
//        cout<<id<<", "<<name<<", "<<money<<endl;
//    }




このようなコードを書き、記入されたファイルの情報をスクリーンに取り出そうとして、このコードの中身をコメントにしたら、ファイルは白紙の状態になってしまいました。
エクリプスを使っているのですが、コメントアウトしてからファイルから文字を取り出すコードを書いた後、ファイルの中身が変わりましたが変更してもいいですかと聞かれました。
このときにデータが消えたんだろうなとは予想できるのですが、一度保存したデータを元のコードが消えることで
消されてしまうのは困ります。
何か対策はないのでしょうか?
コード
/*
 * main.cpp
 *
 *  Created on: 2015/11/06
 *   
 */
#include<iostream>
#include<fstream>

using namespace std;

int main(){
    ofstream thefile("Player.txt");
    cout<<"Enters players ID,Name and Money"<<endl;
    cout<<"press ctrl+z to quit\n"<<endl;

    int idnumber;
    string name;
    double money;

    while(cin>>idnumber>>name>>money){
    thefile<<idnumber<<' '<<name<<' '<<money<<endl;
    }




}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • maisumakun

    2015/11/06 17:35

    コードを書き換えたのであれば、書き換え後のコードをどう書いたかも追記していただけないでしょうか(そちらにバグがあることも考えられますし)。

    キャンセル

回答 3

checkベストアンサー

0

ちょろっとやってみましたが、ちゃんと動作しているようですよ。

下のソースをコンパイルして走らせ、下記を入力すると
123 abc 567 Enter
Ctrl+Z

Player.txtというファイルができ、中身は下記でした。
123 abc 567

そして、その中身を上のソースに入れ替えてコメントを外して走らせると、下記のように表示されました。
123, abc, 567

恐らく、これはreotantanさんの意図通りではないでしょうか?

であれば、最初のソースをコンパイル後、本当に実行されたでしょうか?
eclipseの操作ミスで実行していない可能性があるように思います。
もう一度やってみるのがよさそうに思います。
それでもうまく行かないならeclipse操作の問題ですので、どのような操作をしたのか提示されるのが良いと思います。


cateyeさん。
Ctrl-ZはEOFの意味もあるそうです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/06 22:01

    >Ctrl-ZはEOFの意味もあるそうです。
    有難う御座いますmm

    キャンセル

  • 2015/11/08 04:33

    回答ありがとうございました。

    キャンセル

0

ofstream thefile("Player.txt");
これは上書きなので
ofstream thefile("Player.txt",std::ios::app);
で追記にしましょう。
ググるとこの辺の情報はいっぱい出てくるので確認してみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/08 04:33

    そうですね、上書きが悪さをしていると思います。
    ありがとうございました


    キャンセル

0

半分憶測ですが・・・
1.下のソースをコンパイルして実行しファイルを作った。
2.したのソースをコメントアウトして、上のソースを書きコンパイルした。
(この時、中身が変わった~~といわれた)
3.実行しようとしたらファイルの中身が消えていた。
・・・で、間違いありませんか?

1の段階で作成されたファイルは確認しましたか?
Ctl-Zで抜けるのは何故でしょう?
(うろ覚えですが、windowsだとCtl-Zは元に戻す働きをすると思いましたが?)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/07 05:04

    はい間違いありません、ファイルは確認しました。コード自体に問題がないのはわかっているのですが、
    コメントアウトして新たなコードを書いたときに白紙になってしまうのは、困るなと思い投稿しました

    キャンセル

同じタグがついた質問を見る

  • C++

    4414questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。