我如何写这个非常简单的程序呢
Bjarne Stroustrup博士,1950年出生于丹麦,先后毕业于丹麦阿鲁斯大学和英国剑挢大学,ATT大规模程序设计研究部门负责人,ATT 贝尔实验室和ACM成员。1979年,B. S开始开发一种语言,当时称为\"C with Class\",后来演化为C++。1998年,ANSI/ISO C++标准建立,同年,B. S推出其经典著作The C++ Programming Language的第三版。
我常常收到许多关于编写一个非常简单的程序的询问。这个问题有一个很具代表性的解决方法,那就是(在你的程序中)读入几个数字,对它们做一些处理,再把结果输出。下面是一个这样做的例子:
#includeiostream
#includevector
#includealgorithm
using namespace std;
int main()
{
vectordouble v;
double d;
while(cind) sh_back(d); // 读入元素
if (!f()) { // 检查输入是否出错
cerr \"format error\\n\";
return 1; // 返回一个错误
}
cout \"read \" ze() \" elements\\n\";
reverse(gin(),d());
cout \"elements in reverse order:\\n\";
for (int i = 0; ze(); ++i) cout v[i] ’\\n’;
return 0; // 成功返回
}
对这段程序的观察:
这是一段标准的ISO C++程序,使用了标准库(standard library)。标准库工具在命名空间std中声明,封装在没有.h后缀的头文件中。
如果你要在Windows下编译它,你需要将它编译成一个“控制台程序”(console application)。记得将源文件加上.cpp后缀,否则编译器可能会以为它是一段C代码而不是C++。
是的,main()函数返回一个int值。
读到一个标准的向量(vector)中,可以避免在随意确定大小的缓冲中溢出的错误。读到一个数组(array)中,而不产生“简单错误”(silly error),这已经超出了一个新手的能力——如果你做到了,那你已经不是一个新手了。如果你对此表示怀疑,我建议你阅读我的文章“将标准C++作为一种新的语言来学习”(\"Learning Standard C++ as a New Language\"),你可以在本人著作列表(my publications list)中下载到它。
!f()是对流的格式的检查。事实上,它检查循环是否终结于发现一个end-of-file(如果不是这样,那么意味着输入没有按照给定的格式)。更多的说明,请参见你的C++教科书中的“流状态”(stream state)部分。
vector知道它自己的大小,因此我不需要计算元素的数量。
这段程序没有包含显式的内存管理。Vector维护一个内存中的栈,以存放它的元素。当一个vector需要更多的内存时,它会分配一些;当它不再生存时,它会释放内存。于是,使用者不需要再关心vector中元素的内存分配和释放问题。
程序在遇到输入一个“end-of-file”时结束。如果你在UNIX平台下运行它,“end-of-file”等于键盘上的Ctrl+D。如果你在Windows平台下,那么由于一个BUG它无法辨别“end-of-file”字符,你可能倾向于使用下面这个稍稍复杂些的版本,它使用一个词“end”来表示输入已经结束。
#includeiostream
#includevector
#includealgorithm
#includestring
using namespace std;
int main()
{
vectordouble v;
double d;
while(cind) sh_back(d); // 读入一个元素
if (!f()) { // 检查输入是否失败
ear(); // 清除错误状态
string s;
cin s; // 查找结束字符
if (s != \"end\") {
cerr \"format error\\n\";
return 1; // 返回错误
}
}
是人类存在的希冀 cout \"read \" ze() \" elements\\n\";
reverse(gin(),d());
cout \"elements in reverse order:\\n\";
for (int i = 0; ze(); ++i) cout v[i] ’\\n’;
return 0; // 成功返回
}
更多的关于使用标准库将事情简化的例子,请参见《C++程序设计语言》中的“漫游标准库”(\"Tour of the Standard Library\")一章。
查看本文来源
长沙医院哪男科好肺炎
西安医院妇科哪好
- 他们有在听吗?用这3个技巧,抓住听众的焦虑
- 刘亦菲、李易峰的流量转型路:道阻且长
- 片场长大的杨幂“知世俗而不世俗”,你喜欢她演过的哪部经典作品呢?
- 【文中红包】A股为何全线大跌?添富火线解读
- 国际刑警组织丨曼陀罗误当蔬菜吃,宁夏一对母子中毒!
- 腌制咸鸭蛋,只加盐是“外行”!多加4种料,10天腌制好,流油又起沙
- 安卓手机也将玩游戏“空间音频”,您会期待吗?
- 宝马计划与韩国供应商合作生产线固态电池
- 8岁女童连不吃大量荔枝引起中毒?荔枝虽美味,但5类人也不能多不吃
- 中乙山西龙晋退出职业联赛:无法在规定小时交60万参赛保证金
- 如何在dota2中都激怒玩家?只需一招,无论是队友还是对手都会红温
- 岗位中无论心结有多大,弄明白这五个道理,混得越来越顺利