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

文章目录

  • 输入语句
    • 1、对于控制台的Input操作
    • 2、对于文件Input
  • 输出语句
    • 1、对于控制台的Output操作
    • 2、对于文件Output

输入语句

1、对于控制台的Input操作

对于控制台的Input操作,C++标准在#include中提供了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
using namespace std;
ifstream fin("xxx.in");//声明变量
int main()
{
	int a;
	fin >> a;//和cin很像,进行读入操作
	return 0;
}

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

输出语句

1、对于控制台的Output操作

对于控制台的Output操作,C++标准在#include中提供了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
using namespace std;
ofstream fout("xxx.out");//声明变量
int main()
{
	int a = 100;
	fout << a;//和cout很像,进行读入操作
	return 0;
}

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

你可能感兴趣的:(OI的那些事,OI,知识点)