| 情報学部 | 菅沼ホーム | 全体目次 | 演習解答例 | 付録 | 索引 |
/****************************/
/* 標準入出力 */
/* coded by Y.Suganuma */
/****************************/
#include <iostream>
#define MAX_LINE 50
int main()
{
char line[MAX_LINE];
std::cout << "1行,適当な文字列を入力して下さい ";
std::cin.getline(line, MAX_LINE);
std::cout << line << "\n";
int i;
std::cout << "整数を入力して下さい ";
std::cin >> i;
double x;
std::cout << "実数を入力して下さい ";
std::cin >> x;
char c[10];
std::cout << "文字列を入力して下さい ";
std::cin >> c;
std::cout << "整数 " << i << " 実数 " << x << " 文字列 " << c <<"\n";
return 0;
}
1行,適当な文字列を入力して下さい test input data test input data 整数を入力して下さい 10 実数を入力して下さい 3.14 文字列を入力して下さい abc 整数 10 実数 3.14 文字列 abc
/****************************/
/* クラスの出力 */
/* coded by Y.Suganuma */
/****************************/
#include <iostream>
/*******************/
/* クラスXyzの定義 */
/*******************/
class Xyz
{
public:
int x, y, z;
Xyz(int a, int b, int c) // コンストラクタ
{
x = a;
y = b;
z = c;
}
friend std::ostream& operator << (std::ostream &, Xyz); // <<のオーバーロード
};
/********************************************/
/* 座標の表示(演算子<<のオーバーロード) */
/********************************************/
std::ostream & operator << (std::ostream &stream, Xyz ten)
{
stream << " (" << ten.x << ", ";
stream << ten.y << ", ";
stream << ten.z << ")\n";
return stream;
}
/************/
/* main関数 */
/************/
int main()
{
Xyz a(0, 10, 20), b(-10, 5, 50);
std::cout << a << b;
return 0;
}
(0, 10, 20) (-10, 5, 50)
long setf(long <フラッグ>); skipws = 0x0001 : ストリームの入力中,先頭の空白文字を読み飛ばす left = 0x0002 : 出力を左寄せ right = 0x0004 : 出力を右寄せ internal = 0x0008 : 符号と数字の間にブランクを入れ出力幅一杯にする dec = 0x0010 : 10進表記(デフォルト) oct = 0x0020 : 8進表記 hex = 0x0040 : 16進表記 showbase = 0x0080 : 数値の基数の表示 showpoint = 0x0100 : 浮動小数点の出力で小数点,右端の0,eを表示 uppercase = 0x0200 : 浮動小数点のe等を大文字で表示 showpos = 0x0400 : 正の数値の前に+を表示 scientific = 0x0800 : 実数値を浮動小数点表示 fixed = 0x1000 : 固定小数点表示(デフォルト) unitbuf = 0x2000 : 出力の度に,すべてのストリームをフラッシュ stdio = 0x4000 : 出力の度に,stdout及びstderrをフラッシュ
stream.setf(ios::showbase);
cout.setf(ios::scientific | ios::showpos);
long unsetf(long <フラッグ>); // フラッグをoff long flags(); // フラッグの現在値を返す long flags(long <フラッグ>); // フラッグをonにし,直前の値を返す
int width(int <長さ>); // 出力幅制御 char fill(char <文字>); // 空白を埋める文字 int precision(int <桁数>); // 小数点以下の桁数(デフォルトは 6 桁. // 固定小数点の場合は,小数点や符号を除いた全体の桁数になり, // 表示できないときは浮動小数点表示となる)
/********************************/
/* 書式付き出力(メンバー関数) */
/* coded by Y.Suganuma */
/********************************/
#include <iostream>
using namespace std;
int main()
{
cout.setf(ios::showpos); // +の表示
cout.setf(ios::scientific); // 浮動小数点表示
cout << 123.45 << endl;
cout.precision(3); // 小数点以下3桁
cout.width(15); // 出力幅15桁
cout << 123.45 << endl;
cout.fill('*'); // *で埋める
cout.width(15); // 出力幅15桁
cout << 123.45 << endl;
return 0;
}
+1.234500e+002
+1.235e+002
****+1.235e+002
dec : 10 進表記 endl : 改行文字の出力 ends : 空白文字の出力 flush : ストリームのフラッシュ hex : 16 進表記 oct : 8 進表記 resetioflags(long f) : f で指定されたフラッグを off setbase(int base) : 基数を base にする setfill(int ch) : 文字 h で埋める setioflags(long f) : f で指定されたフラッグを on setprecision(int p) : 小数点以下 p 桁(デフォルトは 6 桁. // 固定小数点の場合は,小数点や符号を除いた全体の桁数になり, // 表示できないときは浮動小数点表示となる) setw(int w) : 出力幅を w ws : 先頭の空白を読み飛ばす
/******************************/
/* 書式付き出力(書式操作子) */
/* coded by Y.Suganuma */
/******************************/
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << setiosflags(ios::showpos);
cout << setiosflags(ios::scientific);
cout << 123.45 << endl;
// 次のように,命令と出力値を一緒に書いても構わない
cout << setprecision(3) << setw(15) << 123.45 << endl;
cout << setfill('*');
cout << setw(15);
cout << 123.45 << endl;
return 0;
}
+1.234500e+002
+1.235e+002
****+1.235e+002
void open(char *<ファイル名>, int <モード>, int <アクセス>);
ios::app : 後ろに追加出力 ios::ate : ファイルが開かれたときファイルの終わりまでシーク ios::in : 入力ファイル ios::nocreate : ファイルが存在しないと実行不可能 ios::noreplace : ファイルがすでに存在すると実行不可能 ios::out : 出力ファイル ios::trunc : ファイルが存在するとそれを大きさ 0 のファイルにする
0 : 通常ファイル 1 : 読み出し専用ファイル 2 : 隠しファイル 4 : システムファイル 8 : アーカイブビットが on のファイル
ofstream st;
st.open("test.txt", ios::out, 0);
ofstream st("test.txt");
fstream st("test.txt", ios::in | ios::out); int eof() : ストリームの終わりであれば非 0 値,そうでなければ 0 を返します int fail() : ストリームの演算に失敗したとき非 0 値,そうでなければ 0 を返します int bad() : fail と似ていますが,もっと悪い状態を表します int good() : ストリームに問題がないとき非 0 値,そうでなければ 0 を返します int operator !() : fail と同じ意味の演算子です.例えば,以下のように使用します. if (!std::cout) 失敗したときの処理 operator void*() : 最後のストリーム演算に失敗したとき 0 値,そうでなければ非 0 値を返します. 例えば,以下のように使用します. if (std::cin>>c) ・・・ else 失敗したときの処理
10 20 5 5 4 10
/****************************/
/* ファイル入出力 */
/* coded by Y.Suganuma */
/****************************/
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
/*******************/
/* クラスXyzの定義 */
/*******************/
class Xyz
{
public:
int x, y, z;
Xyz(int a, int b, int c) /* コンストラクタ */
{
x = a;
y = b;
z = c;
}
friend ostream& operator << (ostream &, Xyz);
};
/******************************************/
/* 座標の表示(演算子<<のオーバーロード) */
/******************************************/
ostream & operator << (ostream &stream, Xyz ten)
{
stream << " (" << ten.x << ", ";
stream << ten.y << ", ";
stream << ten.z << ")\n";
return stream;
}
/************/
/* main関数 */
/************/
int main()
{
// ファイルのオープン
ifstream in("test1.txt");
if (!in) {
cout << "***error 入力ファイルを開けません\n";
exit(1);
}
ofstream out("test.txt");
if (!out) {
cout << "***error 出力ファイルを開けません\n";
exit(1);
}
// データ入力と出力
while (!in.eof()) {
int n1, n2, n3;
in >> n1 >> n2 >> n3;
Xyz a(n1, n2, n3);
out << a;
}
// ファイルのクローズ
in.close();
out.close();
return 0;
}
(10, 20, 5) (5, 4, 10)
| 情報学部 | 菅沼ホーム | 全体目次 | 演習解答例 | 付録 | 索引 |