云计算百科
云计算领域专业知识百科平台

C++输入输出

getchar()和 putchar()

需要头文件<cstdio>,getchar函数返回用户键盘输入的一个字符,使用时不带有任何参数,等同于使用cin 和 cout

getchar不会忽略起首的空白字符,如果读取失败,返回值EOF,EOF的值为-1,所以getchar的返回类型要设为int 不能为char

getchar 和 putchar配合使用

scanf 和 printf 函数 表示 输入 与 输出  

printf("hello world\\n"); \\n表示换行

占位符 %d ,%s表示字符串占位符,%c 字符,%Lf 浮点型,%f浮点型 %u无符号整数

printf("%5d\\n",123); 至少打印5位,不够的用空格凑,凑够5位,打印结果位右对齐,如果想要左对齐写法为 printf("%-5d\\n",123); 

printf("%5d\\n",123456); 打印结果为123456,%5d表示最少打印5位

printf("%f\\n",123.16);  %f默认小数点后边有6位数,不够6位时用0来凑

printf("%.2f\\n",123.45); 表示小数点后边保留2位

printf("%6.2f\\n",0.5);  表示小数点后边有2位,总位数为6位

printf("%6f\\n",12.3); 表示总宽度为6位

printf("%*.*f\\n",6,2,12.3);也可以将6.2用*代替

scanf 函数的占位符后一般不会加\\n

scanf函数中指定的格式和给程序员输入的数据格式要严格匹配,否则可能不能得到想要的值

setw 设置字段宽度(只对紧挨着的输出项有效)

satfill 设置填充字符

例如

需要包含头文件 #include <iomanip>

int main() {     int  a = 123;     cout << a << endl;     cout << setw(5) << a <<  endl;

    cout << setw(5) << setfill('*') << a <<  endl;

setfill 表示不够的字符用*填充     return 0;  } 

fixed  以固定小数点表示浮点数,设置后就不会以科学计数法展示了

scientific 以科学计数法表示浮点数

setprecision 设置浮点数的精度,以控制小数点后的数字位数,一般先固定小数点,再设置精度

    double pi = 3.1415926589793;     cout << pi << endl;     cout << fixed << pi << endl;     cout << scientific << pi << endl;     cout << setprecision(2) << pi << endl;     cout << fixed << setprecision(2) << pi << endl;

dec 以10进制格式显示整数

hex 以16进制格式显示整数

oct 以8进制格式显示整数

    int a = 15;     cout << a << endl;     cout << dec << a << endl;     cout << hec << a << endl;     cout << oct << a << endl;

cout << setw(10) << left << a << endl;  left 左对齐

s = abcbef  s表示一组数,所以用.的前面写s  s.substr(起始位置,长度)   

isalpha 函数表示 字母 (大小写)

    string s; //创建一个字符串      getline(cin, s) //从cin输入这里读取,读取的放入s中      s.pop_back(); //尾部删除一个字符

int a,b;     while(cin >> a >> b, a || b)   这是逗号表达式:逗号隔开的一串表达式     {         cout << a + b << endl;        } 

逗号表达式的特点是:从左向右以此计算,整个函数表达式的结果,是最后一个表达式的结果

//逐个读取 ,计算其中数字字符的个数      string s;     int cnt;     while(cin >> s) //读取一个单词,遇到空格就停止      {         for(char e:s)         {             if(isdigit(e))               cnt++;         }     }     cout << cnt << endl;

//整个字符串读取,计算其中数字字符的个数      string s;     int cnt = 0;     getline(cin,s); //读取字符,遇到空格不会停止      for(char e:s)     {         if(isdigit(e))           cnt++;     }     cout << cnt << endl;

cout 默认不输出6位小数,自动忽略小数点后多余的0,printf 函数打印浮点数的时候,小数点默认打印6位;cout在输出的时候不需要指定格式,printf则需要指定格式。在效率方面cin和cout通常比scanf和printf要快

提高cin与cout效率的方法

ios::sync_with_stdio(false);  括号中写false可以取消了给c语言的输入输出缓冲区的数据同步

在默认情况下cin与cout之间存在一种绑定关系,这种绑定关系意味着,每当从cin读取数据时,任何之前通过cout输出的内容都会被强制刷新到屏幕上。cin.tie(0);  取消cin和cout的绑定

在使用scanf/printf 和 cin/cout 抉择的时候,如果要追求 性能 就使用scanf/printf,或者优化版本的cin/cout,如果不追求性能直接用cin和cout

如果输入的数据量比较小在10的6次方以内,用cin 和 cout 或printf 和scanf 都行。但是输入数据量比较大在10的9次方的时候,推荐使用scanf和printf,避免因为输入输出的开销导致代码超时。

赞(0)
未经允许不得转载:网硕互联帮助中心 » C++输入输出
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!