• 締切済み

c++のファイル保存について

txt形式で保存するとき例えば、 string msg; double input; cout << "保存する実数及び文字列を2回入力:"; if (cin >> msg >> input) { ofstream fi("a.txt"); f i<< msg << input << endl; } else { ofstream f("a.txt"); f i<< input << msg << endl; } としたとき 文字,実数の順番では出力されるのですが実数,文字の順番では表示されません。分岐がおかしいのでしょうか?わからないです、助けてください!!

みんなの回答

  • f272
  • ベストアンサー率46% (8530/18260)
回答No.3

補足で書いてあることから推測すると,あなたのやりたいことは a,0と入力したらa,0 0,aと入力したら0,a と出力させたいということのようです。 #include <iostream> #include <fstream> #include <string> #include <sstream> using namespace std; int main(void) { string msg; double input; string input_string {}; cout << "保存する実数及び文字列を入力:"; getline(cin, input_string); stringstream ss; ss << input_string; if (ss >> msg >> input) { ofstream fi("a.txt"); fi<< msg << input << endl; } ss.str(""); ss.clear(); ss << input_string; if (ss >> input >> msg) { ofstream fi("a.txt"); fi<< input << msg << endl; } return 0; }

OKLmgoggog
質問者

お礼

ご助力ありがとうございました

  • f272
  • ベストアンサー率46% (8530/18260)
回答No.2

> ファイルが開けないときに、実数文字列を出力すれば良いのでしょうか?  それは,あなたがどのようにしたいかによります。 実数、文字列の順番と文字列、実数の両方出力したいのなら,if文で分岐させずに f i<< msg << input << endl; f i<< input << msg << endl; です。条件によってどちらかを出力させたいのなら,その条件を決めてください。

OKLmgoggog
質問者

補足

string msg; double input; cout << "保存する実数及び文字列を2回入力:"; cin >> msg >> input; ofstream fi("a.txt");//ファイルパスを指定 fi << msg << input << endl; fi << input << msg << endl; txtファイルを見たところ a,0はうまく出力されてましたが0,aだと出力されませんでした(0,0と表示) このやりかたでも表示されませんでした if(cin>>msg>>input){fi<<msg<<input;} if(cin>>input>>msg){fi<<input<<msg;}

  • f272
  • ベストアンサー率46% (8530/18260)
回答No.1

実数,文字の順番では表示されるのは,cin >> msg >> inputがエラーになった時です。 どういう動作を期待しているのですか?

OKLmgoggog
質問者

補足

動作的には 実数、文字列の順番と文字列、実数の両方出力したいかんじです。 10,てん てん,10 みたいな… ファイルが開けないときに、実数文字列を出力すれば良いのでしょうか?  if(開けたら)文字列、実数 if(開けなかったら)実数、文字列

関連するQ&A

専門家に質問してみよう