C++學習筆記之輸入和輸出
阿新 • • 發佈:2019-02-03
標準輸入輸出函式
字元輸入函式:int getchar(void);
字元輸出函式:int putchar(int c);
例子:
#include <stdio.h>
int main()
{
char a='a', b='b', c;
c = getchar();
putchar(a);
putchar(b);
putchar('c');
putchar(c);
putchar('\"');
putchar(0101);
putchar('\n');
return 0;
}
執行結果:
s
abcs"A
格式化輸入輸出
格式化輸入函式:scanf
格式化輸出函式:printf
例子:
#include <stdio.h> int main() { int num1; float num2; char ch1; int na, nb, nc, nd, ne, nf, ng; double da, db, dc; printf("---Basic input and output:---\n"); printf("Input a char, a int and a float:"); scanf("%c %d %f", &ch1,&num1, &num2 ); printf("ch1=%c, num1=%d, num2=%f\n",ch1,num1,num2); printf( "Please enter seven integers: " ); scanf( "%d%i%i%i%o%u%x", &na, &nb, &nc, &nd, &ne, &nf, &ng ); printf("%d %d %d %d %d %d %d\n", na, nb, nc, nd, ne, nf, ng ); scanf( "%le%lf%lg", &da, &db, &dc ); printf( "%f\n%f\n%f\n", da, db, dc ); return 0; }
用流進行輸入和輸出
- cout:標準輸出裝置,即顯示器
- cin:標準輸入裝置,即鍵盤
- cerr和clog:標準錯誤流物件
- 通過cout輸出資料 cout<<<表示式1><<<表示式2><...;
- 通過cin輸入資料 cin>><表示式1>>><表示式2><...;
#include <iostream> using namespace std; int main() { char c ; int i ; float x , y ; cout << "Enter: \n" ; cin >> i >> x >> y ; c=i; cout << "c=" << c << "\ti=" << i; cout << "\tx="<< x << "\ty=" << y << "\n" ; return 0; }
流操縱運算元
為流輸入輸出提供格式化輸入輸出的功能
常用的流操縱運算元:
流操縱運算元 | 功能描述 |
setbase(b) | 以進位制基數b為輸出整數值 |
setprecision(n) | 將浮點精度設定為n |
setw(n) | 按照w個字元來讀或者寫 |
flush | 重新整理ostream緩衝區 |
ends | 插入字串結束符,然後重新整理ostream緩衝區 |
endl | 插入換行符,然後重新整理ostream緩衝區 |
ws | 跳過空白字元 |
setfill(ch) | 用ch填充空白字元 |
- 將整數按十進位制、八進位制和十六進位制等形式輸出
- 流操縱運算元oct——將整數輸出形式設定為八進位制
- 流操縱運算元hex——將整數輸出形式設定為十六進位制
- 流操縱運算元dec——將整數輸出形式設定為十進位制
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n;
cout << "Enter a decimal number: ";
cin >> n;
cout << n << " in hexadecimal is: "
<< hex << n << endl
<< dec << n << " in octal is: "
<< oct << n << endl;
return 0;
}
設定浮點數精度
- 流操縱運算元setprecision和函式precision都可控制浮點數小數點後面的位數
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
int main()
{
double log2 = log( 2.0 );
int places;
cout << "log(2) with precisions 0-9.\n"
<< "Precision set by the "
<< "precision member function:" << endl;
for ( places = 0; places <= 9; places++ ) {
cout.precision( places );
cout << log2 << '\n';
}
cout << "\nPrecision set by the "
<< "setprecision manipulator:\n";
// 使用setprecision運算元
for ( places = 0; places <= 9; places++ )
cout<<setprecision(places)<<log2<<'\n';
return 0;
}
設定域寬
- 函式width可以設定當前域寬(輸入輸出的字元數)
- 如果輸出的資料所需的寬度比設定的域寬小,空位用填充字元(省缺為空格)填充
- 如果輸出的資料所需的寬度比設定的域寬大,系統輸出所有位
- 流操縱運算元setw也可以設定域寬
#include <iostream>
using namespace std;
#define WIDTH 5
int main()
{
int w = 4;
char string[ WIDTH + 1 ];
cout << "Enter a sentence:\n";
cin.width( WIDTH );
while ( cin >> string ) {
cout.width( w++ );
cout << string << endl;
cin.width( WIDTH );
}
return 0;
}