高级技术学者对C 代码进行编制
创始人
2024-06-20 05:40:13
0

C++代码拥有很多成熟的用于网络通信的库,其中***有代表性的是跨平台的、重量级的ACE库,该库可以说是C++语言最重要的成果之一,下面就进行学习研究,希望大家能够得到自己想要的东西。

特别是在一个学期的开始,我常常收到许多关于编写一个非常简单的程序的询问。这个问题有一个很具代表性的解决方法,那就是(在你的程序中)读入几个数字,对它们做一些处理,再把结果输出。下面是一个这样做的C++代码例子:

  1. #include 
  2.  
  3.   #include 
  4.  
  5.   #include 
  6.  
  7.   using namespace std;  
  8.  
  9.  
  10.  
  11.   int main()  
  12.  
  13.   {  
  14.  
  15.       vector v;  
  16.  
  17.  
  18.  
  19.       double d;  
  20.  
  21.       while(cin>>d) v.push_back(d);   // 读入元素  
  22.  
  23.       if (!cin.eof()) {       // 检查输入是否出错  
  24.  
  25.           cerr << "format error\n";  
  26.  
  27.           return 1;   // 返回一个错误  
  28.  
  29.       }  
  30.  
  31.  
  32.  
  33.       cout << "read " << v.size() << " elements\n";  
  34.  
  35.  
  36.  
  37.       reverse(v.begin(),v.end());  
  38.  
  39.       cout << "elements in reverse order:\n";  
  40.  
  41.       for (int i = 0; i(); ++i) cout << v[i] << '\n';  
  42.  
  43.  
  44.  
  45.       return 0; // 成功返回  
  46.  
  47.   } 


对这段程序的观察:这是一段标准的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)中下载到它。

 !cin.eof()是对流的格式的检查。事实上,它检查循环是否终结于发现一个end-of-file(如果不是这样,那么意味着输入没有按照给定的格式)。更多的说明,请参见你的C++教科书中的“流状态”(stream state)部分。vector知道它自己的大小,因此我不需要计算元素的数量。#t#

 这段程序没有包含显式的内存管理。Vector维护一个内存中的栈,以存放它的元素。当一个vector需要更多的内存时,它会分配一些;当它不再生存时,它会释放内存。于是,使用者不需要再关心vector中元素的内存分配和释放问题。

程序在遇到输入一个“end-of-file”时结束。如果你在UNIX平台下运行它,“end-of-file”等于键盘上的Ctrl+D。如果你在Windows平台下,那么由于一个BUG它无法辨别“end-of-file”字符,你可能倾向于使用下面这个稍稍复杂些的版本,它使用一个词“end”来表示输入已经结束。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...