﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-lantionzy-随笔分类-C++ Primer</title><link>http://www.cppblog.com/lantionzy/category/12100.html</link><description>coding</description><language>zh-cn</language><lastBuildDate>Thu, 22 Oct 2009 10:20:24 GMT</lastBuildDate><pubDate>Thu, 22 Oct 2009 10:20:24 GMT</pubDate><ttl>60</ttl><item><title>C++ string::size_type 类型</title><link>http://www.cppblog.com/lantionzy/archive/2009/10/22/99164.html</link><dc:creator>lantionzy</dc:creator><author>lantionzy</author><pubDate>Thu, 22 Oct 2009 01:10:00 GMT</pubDate><guid>http://www.cppblog.com/lantionzy/archive/2009/10/22/99164.html</guid><wfw:comment>http://www.cppblog.com/lantionzy/comments/99164.html</wfw:comment><comments>http://www.cppblog.com/lantionzy/archive/2009/10/22/99164.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/lantionzy/comments/commentRss/99164.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lantionzy/services/trackbacks/99164.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: int main()<br>{<br>    string str("Hello World!\n");<br>    cout << "The size of " << str << "is " << str.size()<br>         << " characters, including the newline" << endl;<br>    return 0;<br>}   <br>   从逻辑上来讲，size() 成员函数似乎应该返回整形数值，或是无符号整数。但事实上，size 操作返回的是 string::size_type 类型的值。<br>   string 类类型和许多其他库类型都定义了一些配套类型（companion type）。通过这些配套类型，库类型的使用就能与机器无关（machine-independent）。size_type 就是这些配套类型中的一种。它定义为与 unsigned 型（unsigned int 或 unsigned long）具有相同的含义，而且可以保证足够大能够存储任意 string 对象的长度。为了使&nbsp;&nbsp;<a href='http://www.cppblog.com/lantionzy/archive/2009/10/22/99164.html'>阅读全文</a><img src ="http://www.cppblog.com/lantionzy/aggbug/99164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lantionzy/" target="_blank">lantionzy</a> 2009-10-22 09:10 <a href="http://www.cppblog.com/lantionzy/archive/2009/10/22/99164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>剖析网络编程（4）-- 基于UDP的简单聊天程序</title><link>http://www.cppblog.com/lantionzy/archive/2009/10/20/99042.html</link><dc:creator>lantionzy</dc:creator><author>lantionzy</author><pubDate>Tue, 20 Oct 2009 09:07:00 GMT</pubDate><guid>http://www.cppblog.com/lantionzy/archive/2009/10/20/99042.html</guid><wfw:comment>http://www.cppblog.com/lantionzy/comments/99042.html</wfw:comment><comments>http://www.cppblog.com/lantionzy/archive/2009/10/20/99042.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/lantionzy/comments/commentRss/99042.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lantionzy/services/trackbacks/99042.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:     本示例的基本实现过程是：客户端通过键盘输入数据，数据被发送到服务器。后者接收到数据后，需要进行判断，如果发来的数据串为“quit”，表明对方向退出聊天过程，于是服务器端也发送字符串“quit”，聊天过程终止；否则将接收到的信息和对方的IP地址进行格式化后，在屏幕上输出。同样在客户端也需要进行相应的判断和输出。<br>   首先编写服务器端程序，实现代码如下：<br>#pragma comment(lib,"ws2_32.lib")<br>#include <WINSOCK2.H><br>#include <stdio.h>&nbsp;&nbsp;<a href='http://www.cppblog.com/lantionzy/archive/2009/10/20/99042.html'>阅读全文</a><img src ="http://www.cppblog.com/lantionzy/aggbug/99042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lantionzy/" target="_blank">lantionzy</a> 2009-10-20 17:07 <a href="http://www.cppblog.com/lantionzy/archive/2009/10/20/99042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>剖析网络编程（3）-- 基于TCP/UDP网络编程应注意的几个地方</title><link>http://www.cppblog.com/lantionzy/archive/2009/10/19/98948.html</link><dc:creator>lantionzy</dc:creator><author>lantionzy</author><pubDate>Mon, 19 Oct 2009 08:23:00 GMT</pubDate><guid>http://www.cppblog.com/lantionzy/archive/2009/10/19/98948.html</guid><wfw:comment>http://www.cppblog.com/lantionzy/comments/98948.html</wfw:comment><comments>http://www.cppblog.com/lantionzy/archive/2009/10/19/98948.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/lantionzy/comments/commentRss/98948.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lantionzy/services/trackbacks/98948.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 针对示例程序，说明几个用VC++基于TCP/UDP网络编程应注意的几个地方：<br>   1、基于TCP和基于UDP的网络应用程序在发送和接收数据时使用的函数是不一样的：前者使用send和recv，后者使用sendto和recvfrom。<br>   2、由于程序中使用了Winsock库中的函数，这里需要为程序链接相应的.lib文件：ws2_32.lib。<br>    3、我们知道，Windows网络编程至少需要两个头文件：winsock2.h和windows.h，而在WinSock2.0之前还存在一个老版本的winsock.h。正是这三个头文件的包含顺序，导致了问题的出现...<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/lantionzy/archive/2009/10/19/98948.html'>阅读全文</a><img src ="http://www.cppblog.com/lantionzy/aggbug/98948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lantionzy/" target="_blank">lantionzy</a> 2009-10-19 16:23 <a href="http://www.cppblog.com/lantionzy/archive/2009/10/19/98948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>剖析网络编程（2）-- 基于UDP的的网络应用程序</title><link>http://www.cppblog.com/lantionzy/archive/2009/10/19/98943.html</link><dc:creator>lantionzy</dc:creator><author>lantionzy</author><pubDate>Mon, 19 Oct 2009 07:23:00 GMT</pubDate><guid>http://www.cppblog.com/lantionzy/archive/2009/10/19/98943.html</guid><wfw:comment>http://www.cppblog.com/lantionzy/comments/98943.html</wfw:comment><comments>http://www.cppblog.com/lantionzy/archive/2009/10/19/98943.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/lantionzy/comments/commentRss/98943.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lantionzy/services/trackbacks/98943.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:    注：本系列文章适合初学网络编程的读者<br>   对于基于UDP的服务器来说，就是一个客户端，不用建立监听或者说建立连接，直接调用recvfrom函数接收数据。注意，在编写基于UDP的网络程序时，在接收数据时，使用的是recvfrom函数。而前面基于TCP的服务器端程序接收数据时使用的是recv函数。<br>   客户端也可以直接发送数据，这里需要调用sendto函数而不是send函数。<br><br>   新建一个空的Win32 Console Application类型的工程，在其中添加实现基于UDP的服务器端程序的代码UDPSrv.cpp：&nbsp;&nbsp;<a href='http://www.cppblog.com/lantionzy/archive/2009/10/19/98943.html'>阅读全文</a><img src ="http://www.cppblog.com/lantionzy/aggbug/98943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lantionzy/" target="_blank">lantionzy</a> 2009-10-19 15:23 <a href="http://www.cppblog.com/lantionzy/archive/2009/10/19/98943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>剖析网络编程（1）-- 基于TCP的的网络应用程序</title><link>http://www.cppblog.com/lantionzy/archive/2009/10/19/98934.html</link><dc:creator>lantionzy</dc:creator><author>lantionzy</author><pubDate>Mon, 19 Oct 2009 06:36:00 GMT</pubDate><guid>http://www.cppblog.com/lantionzy/archive/2009/10/19/98934.html</guid><wfw:comment>http://www.cppblog.com/lantionzy/comments/98934.html</wfw:comment><comments>http://www.cppblog.com/lantionzy/archive/2009/10/19/98934.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/lantionzy/comments/commentRss/98934.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lantionzy/services/trackbacks/98934.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:    注：本系列文章适合初学网络编程的读者<br>   <br>   网络程序的实现可以有很多方式，Windows Socket就是其中一种比较简单的方法。socket是连接应用程序与网络驱动程序的桥梁，socket在应用程序中创建，通过绑定操作与驱动程序建立关系。此后，应用程序送给socket的数据，由socket交给驱动程序向网络上发送出去。计算机从网络上收到与该socket绑定的IP地址和端口号相关的数据后，由驱动程序交给socket，应用程序便可从该socket中提取接收到的数据。<br>   下面通过一个简单的实例来讲述基于TCP的socket编程的通信流程。其中服务器端程序实现代码TCPSrv.cpp如下：&nbsp;&nbsp;<a href='http://www.cppblog.com/lantionzy/archive/2009/10/19/98934.html'>阅读全文</a><img src ="http://www.cppblog.com/lantionzy/aggbug/98934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lantionzy/" target="_blank">lantionzy</a> 2009-10-19 14:36 <a href="http://www.cppblog.com/lantionzy/archive/2009/10/19/98934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编写支持快速用户切换的应用程序</title><link>http://www.cppblog.com/lantionzy/archive/2009/10/15/98679.html</link><dc:creator>lantionzy</dc:creator><author>lantionzy</author><pubDate>Thu, 15 Oct 2009 05:59:00 GMT</pubDate><guid>http://www.cppblog.com/lantionzy/archive/2009/10/15/98679.html</guid><wfw:comment>http://www.cppblog.com/lantionzy/comments/98679.html</wfw:comment><comments>http://www.cppblog.com/lantionzy/archive/2009/10/15/98679.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/lantionzy/comments/commentRss/98679.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lantionzy/services/trackbacks/98679.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:    如果应用程序的另一个实例影响到可选（非首要）功能，应用程序启动时必须：<br>      1）检测是否有用户正在运行该应用程序。 <br>      2）阻止所有有问题的功能。 <br>      3）通知当前用户无法使用特定功能的原因。 <br><br>   下面给出一个实例：&nbsp;&nbsp;<a href='http://www.cppblog.com/lantionzy/archive/2009/10/15/98679.html'>阅读全文</a><img src ="http://www.cppblog.com/lantionzy/aggbug/98679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lantionzy/" target="_blank">lantionzy</a> 2009-10-15 13:59 <a href="http://www.cppblog.com/lantionzy/archive/2009/10/15/98679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>泛型算法</title><link>http://www.cppblog.com/lantionzy/archive/2009/10/15/98645.html</link><dc:creator>lantionzy</dc:creator><author>lantionzy</author><pubDate>Thu, 15 Oct 2009 01:42:00 GMT</pubDate><guid>http://www.cppblog.com/lantionzy/archive/2009/10/15/98645.html</guid><wfw:comment>http://www.cppblog.com/lantionzy/comments/98645.html</wfw:comment><comments>http://www.cppblog.com/lantionzy/archive/2009/10/15/98645.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/lantionzy/comments/commentRss/98645.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lantionzy/services/trackbacks/98645.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、只读算法<br><br>    1、使用两个迭代器和一个值调用 find 函数，检查两个迭代器实参标记范围内的每一个元素。只要找到与给定值相等的元素，find 就会返回指向该元素的迭代器。如果没有匹配的元素，find 就返回它的第二个迭代器实参，表示查找失败。于是，只要检查该函数的返回值是否与它的第二个实参相等，就可得知元素是否找到了。<br>     int search_value = 42;<br>     // call find to see if that value is present<br>     vector<int>::const_iterator result = find(vec.begin(), vec.end(), search_value);<br>     // report the result<br>     cout << "The value " << search_value<br><br>          << (result == vec.end()? " is not present" : " is prese&nbsp;&nbsp;<a href='http://www.cppblog.com/lantionzy/archive/2009/10/15/98645.html'>阅读全文</a><img src ="http://www.cppblog.com/lantionzy/aggbug/98645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lantionzy/" target="_blank">lantionzy</a> 2009-10-15 09:42 <a href="http://www.cppblog.com/lantionzy/archive/2009/10/15/98645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小结顺序容器的使用</title><link>http://www.cppblog.com/lantionzy/archive/2009/10/15/98637.html</link><dc:creator>lantionzy</dc:creator><author>lantionzy</author><pubDate>Thu, 15 Oct 2009 00:19:00 GMT</pubDate><guid>http://www.cppblog.com/lantionzy/archive/2009/10/15/98637.html</guid><wfw:comment>http://www.cppblog.com/lantionzy/comments/98637.html</wfw:comment><comments>http://www.cppblog.com/lantionzy/archive/2009/10/15/98637.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/lantionzy/comments/commentRss/98637.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lantionzy/services/trackbacks/98637.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:        标准库定义了三种顺序容器类型：vector、list 和 deque（双端队列“double-ended queue”）。它们的差别在于访问元素的方式，以及添加或删除元素相关操作的运行代价。<br><br>    1、每种顺序容器都提供了一组有用的类型定义以及以下操作：<br><br>       在容器中添加元素。<br><br>       在容器中删除元素。<br><br>       设置容器大小。<br><br>      （如果有的话）获取容器内的第一个和最后一个元素。<br><br>    2、一些关键概念和难点： <br><br>       vector 对象动态增长：&nbsp;&nbsp;<a href='http://www.cppblog.com/lantionzy/archive/2009/10/15/98637.html'>阅读全文</a><img src ="http://www.cppblog.com/lantionzy/aggbug/98637.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lantionzy/" target="_blank">lantionzy</a> 2009-10-15 08:19 <a href="http://www.cppblog.com/lantionzy/archive/2009/10/15/98637.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>成员函数隐含的this指针</title><link>http://www.cppblog.com/lantionzy/archive/2009/10/15/98636.html</link><dc:creator>lantionzy</dc:creator><author>lantionzy</author><pubDate>Thu, 15 Oct 2009 00:13:00 GMT</pubDate><guid>http://www.cppblog.com/lantionzy/archive/2009/10/15/98636.html</guid><wfw:comment>http://www.cppblog.com/lantionzy/comments/98636.html</wfw:comment><comments>http://www.cppblog.com/lantionzy/archive/2009/10/15/98636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lantionzy/comments/commentRss/98636.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lantionzy/services/trackbacks/98636.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:     类的成员函数具有一个附加的隐含形参，即指向该类对象的一个指针。这个隐含形参命名为 this，与调用成员函数的对象绑定在一起。成员函数不能定义 this 形参，而是由编译器隐含地定义。成员函数的函数体可以显式使用 this 指针，但不是必须这么做。如果对类成员的引用没有限定，编译器会将这种引用处理成通过 this 指针的引用。<br><br>    尽管在成员函数内部显式引用 this 通常是不必要的，但有一种情况下必须这样做：当我们需要将一个对象作为整体引用而不是引用对象的一个成员时。最常见的情况是在这样的函数中使用 this：该函数返回对调用该函数的对象的引用。&nbsp;&nbsp;<a href='http://www.cppblog.com/lantionzy/archive/2009/10/15/98636.html'>阅读全文</a><img src ="http://www.cppblog.com/lantionzy/aggbug/98636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lantionzy/" target="_blank">lantionzy</a> 2009-10-15 08:13 <a href="http://www.cppblog.com/lantionzy/archive/2009/10/15/98636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>