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

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

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

C++

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

Q&A

解決済

1回答

925閲覧

c++ 入出力演算子 class stream

_._._ami

総合スコア26

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

C++

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

0グッド

0クリップ

投稿2020/07/29 04:03

入出力演算子を実装してみたのですが, ファイルを読み込んでくれません.
エラーは特にでてません.

どこを直せば良いか教えて頂きたいです.
ヒントや些細なことでも構いません!
よろしくお願いします!

c++

1#include <iostream> 2#include <fstream> 3 4using namespace std; 5class Sum{ 6public: 7 int x,y; 8 Sum(int x,int y){ 9 (*this).x = x; 10 (*this).y = y; 11 } 12 13 Sum(){} 14 15 friend istream& operator>>(istream& is,Sum& v); 16 friend ostream& operator<<(ostream& os, Sum v); 17 18}; 19 20// 入力演算子 >> を実装. 21// 第一引数: istream 型変数の参照.左側に cin 等がくるため,Sum のメンバ関数として実装できない. 22// 第二引数: Sum 型変数の参照.引数に与えられた変数のメンバ x, y の値に istream から受け取った値を入れ,改変したいため,参照で受け取る必要が有る. 23// 処理: 第二引数のメンバ x, y に標準入力から順番に値を読み取り格納 24// 戻り値: istream 型であり,第一引数の参照を返す. 25 26istream& operator>>(istream& is,Sum& v){ 27 28 is >> v.x >> v.y; 29 return is; 30} 31 32// 出力演算子 << を実装. 33// 第一引数: ostream 型の参照.左側に cout 等がくるため,Sum のメンバ関数として実装できない. 34// 第二引数: Sum 型.これは参照でなくて構わない.参照でも良い(こっちのほうが高速). 35// 処理: 第二引数のメンバ x, y から,x + y, x - y を計算し順に標準出力へ出力.間にスペース 36// 戻り値: ostream 型であり,第一引数の参照を返す. 37 38ostream& operator<<(ostream& os, Sum v){ 39 os << v.x + v.y << " " << v.x - v.y; 40 return os; 41}; 42 43 44 45int main() 46{ 47 int n; 48 cin >> n; 49 for (int i = 0; i < n; ++i) { 50 Sum a; 51 cin >> a; 52 cout << a << "\n"; 53 } 54 55 ifstream ifs("11th.stream.in"); 56 ofstream ofs("11th.fstream.out"); 57 ifs >> n; 58 for (int i = 0; i < n; ++i) { 59 Sum a; 60 ifs >> a; 61 ofs << a << "\n"; 62 } 63 64 return 0; 65}

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

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

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

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

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

SHOMI

2020/07/29 04:40 編集

カレントディレクトリに"11th.stream.in"がないだけでは?
guest

回答1

0

ベストアンサー

C++

1#include <iostream> 2 3// using namespace std; // 名前空間を台無しにするのはお行儀悪い 4class Sum { 5 int x_, y_; // メンバ変数をpublicに晒すのはお行儀悪い 6public: 7 Sum(int x, int y) : x_(x), y_(y) { 8 } 9 10 Sum() {} 11 12 friend std::istream& operator>>(std::istream& is, Sum& v); 13 friend std::ostream& operator<<(std::ostream& os, const Sum& v); 14 15}; 16 17std::istream& operator>>(std::istream& is, Sum& v) { 18 return is >> v.x_ >> v.y_; 19} 20 21std::ostream& operator<<(std::ostream& os, const Sum& v) { 22 return os << (v.x_ + v.y_) << " " << (v.x_ - v.y_); 23}; 24 25// おためし 26#include <sstream> 27 28int main() { 29 std::istringstream stream("1 2 " "3 4 " "5 6 "); 30 Sum a; 31 while ( stream >> a ) { 32 std::cout << a << "\n"; 33 } 34}

投稿2020/07/29 04:30

episteme

総合スコア16612

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問