《算法竞赛入门经典》学习笔记 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)

posted @ 2016-06-25 09:29  月光诗人  阅读(717)  评论(0编辑  收藏  举报