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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C++

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

Q&A

解決済

1回答

454閲覧

何も文字がない場合の表現

m_W

総合スコア12

C++

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

0グッド

1クリップ

投稿2018/12/26 11:31

前提・実現したいこと

0
1
2
3
4

と書かれたテキストファイルをこのとおりに表示したいのですが

該当のソースコード

C++

1#include <iostream> 2#include <fstream> 3#include <math.h> 4#include <string> 5using namespace std; 6 7int main(){ 8 9 string filename; 10 cout << "ファイル名を入力してください。バックアップを作成します"; 11 cin >> filename; 12 filename = filename + string(".backup"); 13 cout << "ファイル名:" << filename << "\n"; 14 15 // ファイル書き出し 16 17 ofstream fout(filename.c_str()); 18 if(!fout){cout << "出力ファイルが開けません"; return 1;} 19 for(int i = 0; i < 5; i++){ 20 fout << i << "\n"; 21 } 22 fout.close(); 23 24 // ファイル読み込み 25 26 ifstream fin(filename.c_str()); 27 if(!fin){cout << "入力ファイルが開けません"; return 1;} 28 string str; 29 int i; 30 while(!fin.eof()){ 31 fin >> str; 32 cout << "line " << i << ": " << str << "\n"; 33 i++; 34 } 35 fin.close(); 36 return 0; 37}

発生している問題

上のコードだと
0
1
2
3
4
4

と出力してしまいます。
テキストの最後に改行があるため、
eof に到達する前に 1 行あることになるが、fin >> str において何も読み込めないため、str の中身が書
き換わらず、4 が繰り返されているということはわかるのですが、これを繰り返さないようにしたいです。

試したこと

ファイル読み込みの部分で

fin >> str; if(str = NULL){break;}  ←を追加したのですが

error: ambiguous overload for ‘operator=’ (operand types are ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ and ‘long int’)
if(str = NULL){break;}
^

というエラーとたくさんのnote文が出てきてしまいコンパイルできませんでした。

補足情報(FW/ツールのバージョンなど)

Linuxを使っています。事情によりC++のバージョンアップはできません

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

条件文でfin >> strすればいいのでは

https://wandbox.org/permlink/1w2qk3RlfDm1Dvw1

投稿2018/12/26 11:33

編集2018/12/26 11:33
yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m_W

2018/12/26 11:37

回答有り難うございます!無事動きました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問