《算法竞赛入门经典》学习笔记 2.4.4 C++中的输入输出
2.4.3 64位整数
输入输出long long除了cin,cout,也可以借助于printf和scanf语句,但对应的占位符缺是和平台与编译器相关的:在Linux中,gcc很同意的用%lld;在Windows中,MinGW的gcc和VC6都需要用%I64d;但VS2008却是用%lld。
2.4.4 C++中的输入输出
问题是经典的“A+B”问题:输入若干对整数,输出每对之和。
第1种方法:
#include <cstdio> //功能和C中的stdio.h很接近,但有些许不同 using namespace std; int main() { int a, b; while (scanf("%d%d", &a, &b) == 2) printf("%d\n", a+b); return 0; }
要在C++程序中使用C语言头文件,请去掉扩展名.h,并在最前面加上小写字母c。例如,stdio.h在C++中的新名字是cstdio。另外,第一行中以//开头的是C++特有的“单行注释”,它和C中传统注释(/*和*/)可以混合使用。
需要说明的是:C++中保留着C语言的常用头文件。如果你愿意,可以继续用stdio.h并且省略using namespace std语句。事实上,很多(但不是所有)C程序能不加修改地被C++编译器所编译。
第2种方法:
#include <iostream> using namespace std; int main() { int a, b; while (cin >> a >> b) cout << a + b << "\n"; return 0; }
头文件iostream中包含着对输入输出流的定义。
第2种方法也可以修改成文件输入输出流的方法。当然也可以用freopen对文件进行重定向,不过更正统的方法如下:
#include <fstream> using namespace std; ifstream fin("aplusb.in"); ofstream fout("aplusb.out"); int main() { int a, b; while (fin >> a >> b) fout << a + b << "\n"; return 0; }
如果想再次使用cin和cout,只需把fin和fout的声明去掉,并加上这样两行即可:
#define fin cin #define fout cout
比较效率(使用clock()与CLOCKS_PER_SEC)