C++输入语句&输出语句

输入语句

1、对于控制台的Input操作

对于控制台的Input操作,C++标准在#include<iostream>中提供了cin这一对象,提供输入操作。
istream& operator>>(istream&, T &);
这里就是cin所属的istream类的重载的函数。我们可以通过这种方式来进行数据输入。
常用用法 cin >> a >> b >> ... >> n;这里的a,b,c,...,n可以是格式控制符,也可以是变量。
关于格式控制符,可以看这里(重点!!!)
由于istream类是采用模板定义的第二个参数,所以通过cin >> a几乎可以完成任何常见类型的数据的读入。包括但不限于int,double,char,char[],long long。很方便。
但是! C++的istream类的底层还是通过C语言的cstdio头文件里的scanf()实现的,所以其效率较低,当数据读入量很大的时候甚至读入就会超时!
所以,当我们不需要读入string类的变量的时候,推荐还是不要使用cin,而是使用scanf()

2、对于文件Input

对于文件输入输出,一般我们绝不会使用cin+freopen()的组合。由于cinscanf()等函数是共用一个stdin的接口,cin的输入要配合scanf(),中间有个缓冲区,从而导致其非常慢。当然,我们也可以采用std::ios::sync_with_stdio(false)这一函数关闭掉cinscanf()的同步,但是在实际测试中,它的效果因机器而异,效果并不好,故我们一般不使用这种操作。
我们一般使用fstream中定义的ifstream类进行文件读入操作。基本用法是:

#include<fstream>
using namespace std;
ifstream fin("xxx.in");//声明变量
int main()
{
	int a;
	fin >> a;//和cin很像,进行读入操作
	return 0;
}

嗯,这样就好。
cin一样,它的效率没有scanf()+freopen()高。

输出语句

1、对于控制台的Output操作

对于控制台的Output操作,C++标准在#include<iostream>中提供了cout这一对象,提供输入操作。
ostream& operator<<(ostream&, T &);
这是cout所属的ostream类的重载的函数。我们可以通过这种方式来进行数据输入。
常用用法 cout << a << b << c;这里的a,b,c,...,n可以是格式控制符,也可以是变量,还可以是一些常量。
关于格式控制符,可以看这里(重点!!!)
由于ostream类是采用模板定义的第二个参数,所以通过cout << a几乎可以完成任何常见类型的数据的输出。包括但不限于int,double,char,char[],long long。很方便。
但是! C++的ostream类的底层还是通过C语言的cstdio头文件里的printf()实现的,所以其效率较低,当数据读入量很大的时候甚至输出就会超时!
所以,当我们不需要输出string类的变量的时候(其实输出它时也可采用printf("%s", str.c_str())),推荐还是不要使用cout,而是使用printf()

2、对于文件Output

对于文件输入输出,一般我们绝不会使用cout+freopen()的组合。由于coutprintf()等函数是共用一个stdout的接口,cout的输入要配合printf,中间有个缓冲区,从而导致其非常慢。当然,我们也可以采用std::ios::sync_with_stdio(false)这一函数关闭掉coutprintf()的同步,但是在实际测试中,它的效果因机器而异,效果并不好,故我们一般不使用这种操作。
我们一般使用fstream中定义的ofstream类进行文件读入操作。基本用法是:

#include<fstream>
using namespace std;
ofstream fout("xxx.out");//声明变量
int main()
{
	int a = 100;
	fout << a;//和cout很像,进行读入操作
	return 0;
}

同样,它的效率没有printf()+freopen()

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日居月诸Rijuyuezhu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值