随笔分类 -  C++

摘要:C++中有一些系统的语法和一些特有的指令,挺可爱的,想记下来。1. 逗号的方便用法 逗号在C++中表示,下面代码中第一行的用法大家应该很熟悉,a和b可以并列写是将a,b定义成了同一类型。而第二行的用法便很少见了。居然可以在赋值中用逗号隔开两个同类型的变量的赋值语句。崇拜下。int a = 0, b = 0;a = 10, b = 10;std::cout<<a<<" "<<b<<std::endl; 语法灵感来源:《STL 源码剖析 229页》2. 使用汇编语言 在C++中可以使用汇编语言,只需要在前面加上关键词 __asm 阅读全文
posted @ 2012-09-01 19:46 小卡的土豆园 阅读(411) 评论(0) 推荐(0)
摘要:看书的时候看到书上一些表达有问题,网上搜了下是作者之前就做了勘误的地方或者一些理解起来有问题的地方,在这里记下来 ^_^。(书是第四版中文版)当然先发下英文勘误表的地址:http://ptgmedia.pearsoncmg.com/images/9780201721485/Errata/Lippman_0201721481_Errata.html-----------------------------------------Page 269表9-4中 iter1 += iter2 iter1 -= iter2 这是迭代器加减法的复合赋值运算:将iter1加上或减去iter2的运算结果赋给.. 阅读全文
posted @ 2012-08-16 17:20 小卡的土豆园 阅读(244) 评论(0) 推荐(0)
摘要:Void Pointer(void *)类型 指针是一种特殊的指针,可以用以指向任意的数据类型。但是void*类型指针当然也有它的局限,不能将这个类型的指针指向其他的既定的类型,如char*。如果要进行转换则需要强制类型转换。如:void* ptr = "HAHAHA";char* str = (char*) ptr;Volatile Pointervolatile 和 const都是类型限定符。volatile关键字可以用来说明一个变量有可能被意想不到的改变。如果一个变量被多次应用那么编译器的优化程序就会将其拷贝到寄存器中进行程序的优化,而当这个变量一直在改变的时候这样的 阅读全文
posted @ 2012-07-25 16:01 小卡的土豆园 阅读(344) 评论(0) 推荐(0)
摘要:调用C++编译器的命令因编译器和操作系统的不同而不同,常用的编译器是GNU编译器和微软Visual Studio编译器。调用GNU编译器的默认命令是g++ --《primer》gcc 和 g++分别是GNU的C和C++的编译器。一般分成四步: 1. 预处理,生成.i的文件 [预处理器cpp]2. 将预处理后的文件不转换成汇编语言,生成.s文件[编译器egcs]3. 有汇编变为目标代码(机器代码)生成.o文件[汇编器as]4. 连接目标代码,生成可执行程序 [链接器] 下面给出一些例子,运行环境是win7+Cygwin。 编译使用编译器将代码编译成二进制目标文件(object file)。g+. 阅读全文
posted @ 2012-07-24 22:49 小卡的土豆园 阅读(14331) 评论(0) 推荐(0)
摘要:处理特殊字符插入的文本中,如果有单引号,就会报错。 如果是自己写的文本则需要在单引号前加上转义字符,因为ODBC需要进行一次转移。如:strQuery.Format("INSERT INTO doc (text) VALUES(\'%s\');",text.c_str());但是如果是拼接的字符则需要进行两次转义,因为拼接的时候需要一次转义而后的ODBC又需要一次转义,如:CString strQuery = "INSERT INTO "+chartName+"("+strName+") VALUES( 阅读全文
posted @ 2012-07-05 15:53 小卡的土豆园 阅读(274) 评论(0) 推荐(0)
摘要:set是C++ STL中一个有序的容器,与vector不同的是set里的元素不能重复。由于有排序的要求所以不是什么类型的都能往里放的,如果要放入一个set不支持的数据类型需要重载。set 排序函数准则(准则摘抄自:http://hi.baidu.com/zhouhong0730/blog/item/45fbc432c1ec80a55fdf0e18.html)向set中添加的元素类型必须重载<操作符用来排序,排序满足以下准则:1、非对称,若A<B为真,则B<A为假。2、可传递,若A<B,B<C,则A<C。3、A<A永远为假。set中判断元素是否相等: i 阅读全文
posted @ 2012-07-04 21:13 小卡的土豆园 阅读(7006) 评论(0) 推荐(1)
摘要:CFile写文件基本的写文件采用的是文件流,举个栗子:CFile m_file; //建立一个CFile对象//打开文件,如果不存在该文件就创建文件if(!file.Open("file.txt",CFile::modeCreate|CFile::modeWrite)){ AfxMessageBox( "can not open file! "); return false;} CString output = "Life is Beautiful.";m_file.Write(output,strlen(output));file. 阅读全文
posted @ 2012-03-11 19:40 小卡的土豆园 阅读(4251) 评论(0) 推荐(0)
摘要:1. LINK : fatal error LNK1000: Internal error during IncrBuildImageVS2008经典错误,只要重新编译一下就可以。在2010里就没有这个Bug了。2. general error c101008a: Failed to save the updated manifest to the file2008默认的编码是Unicode,如果在编码的中途改变编码设置,如设为多字节就会产生这个bug,莫紧张,只要在类视图右击-->清理(clean)即可。3. 应用程序无法启动,因为应用程序的并行配置不正确把Debug的.exe程序拷贝 阅读全文
posted @ 2012-03-01 18:41 小卡的土豆园 阅读(335) 评论(0) 推荐(0)
摘要:ListBox是MFC中文本列表控件,CheckListBox是继承了ListBox的MFC中自带的一种控件,和ListBox的区别就是在每条文本前面有一个选择框。1. 设置如果是需要复选,那么需要设置一下。到你的对话框界面,在ListBox的属性上设置: Owner Draw - Fixed, Has Strings - True。2. 添加变量自己添加的是ListBox的变量,而后自己将CListBox改成CCheckedBox。3. 加入项 m_checklist.AddString(_T("Monday")); m_checklist.AddString(_T(&q 阅读全文
posted @ 2012-02-28 16:40 小卡的土豆园 阅读(4274) 评论(0) 推荐(0)
摘要:Part 1. String - int- String -> intint = string.atoi();- int -> CString由于int是变量,CString是类别,所以变量不能直接转换成类别。需要用Format函数CString a;int b =10;a.format("%d", b);- CString -> intint = atoi(cstr);---------------------------------------------------------------------------------Part 2. strin 阅读全文
posted @ 2012-02-14 15:28 小卡的土豆园 阅读(261) 评论(0) 推荐(0)
摘要:值传递分为很多种,有引用传值、指针传值、直接传值。1. 直接传值与Java中不同,C++中传递都是复制传值,就是说传值时会新建一个变量并将当前的i复制到函数variablePassing中的变量中。void main(){ int i; variablePassing(i);}void variablePassing(int i){}2. 指针传值指针是C++中的典型结构,是存储对象的地址的。而&符号还有取地址的意思,所以相当于取得该对象(变量)的地址然后传给函数variablePassing的指针参数i。void main(){ int i; variablePass... 阅读全文
posted @ 2012-01-31 19:49 小卡的土豆园 阅读(314) 评论(0) 推荐(0)
摘要:很久没写C++的程序了,都忘光了,还是记下,以后如果用得着。Vector遍历:for(std::vector<CString>::iterator p_condition = conditions.begin(); p_condition != conditions.end(); p_condition++){ cout<<*p_condition<<endl;} 阅读全文
posted @ 2012-01-29 15:25 小卡的土豆园 阅读(190) 评论(0) 推荐(0)
摘要:环境:VS2008-关联变量方法一:在控件上右键-变量-CEdit类型变量-输入变量名。方法二:添加代码头文件中定义变量CEdit m_edit_fileName;源文件中变量关联DDX_Control(pDX, IDC_FILENAME, m_edit_fileName);-取得文本取得CEdit中输入文本的函数:int GetWindowTextA( LPTSTR lpszStringBuf, int nMaxCount ) const;void GetWindowTextA( CString& rString ) const;-设置文本设置CEdit中文本的函数:void S.. 阅读全文
posted @ 2012-01-28 20:14 小卡的土豆园 阅读(10134) 评论(2) 推荐(2)
摘要:static 变量:举例子,譬如你做一个卖西瓜的程序,里面有一个类叫做西瓜:watermelonclass watermelon(){ static int totalSell; //总的西瓜销售量 int price; //西瓜的价格 double weight; //西瓜的重量}其中西瓜只是针对单个西瓜的对象,譬如说有西瓜的价格,西瓜的重量等。可是如何表示一个全局的概念,如西瓜的总销售量?只需在这个变量上加入static即可,这样totalsell这个变量便是所有的西瓜们共有的。任何一个西瓜对象都可以对这个参数进行操作,譬如说西瓜A卖出--totalsell++; 西... 阅读全文
posted @ 2011-12-13 21:44 小卡的土豆园 阅读(302) 评论(0) 推荐(0)
摘要:multimap提供了可以一种可以有重复键值的STL map类型。其插入方式和map相似,但是由于可以拥有重复键值所以在查找方面有些不同。查找1. 直接找到每种键值的所有元素的第一个元素的游标通过函数:lower_bound( const keytype& x ), upper_bound( const keytype& x ) 可以找到比指定键值x的小的键值的第一个元素和比指定键值x大的键值的第一个元素。返回值为该元素的游标。细节:当到达键值x已经是最大时,upper_bound返回的是这个multimap的end游标。同理,当键值x已经是最小了,lower_bound返回的 阅读全文
posted @ 2011-08-09 15:19 小卡的土豆园 阅读(13259) 评论(0) 推荐(0)
摘要:总的来说:size_t 是无符号的整型,int 是 有符号的整型。size_t 是unsigned integer type 的别名,定于与头文件<cstddef>,常用于表示大小和字符长度,在一些函数如sizeof() 或者size()中使用。size_t 中特别定义了一个标识:npos。在一些函数中表示失败的返回值。如在size_t string::find()中,如果没有找到字符串,那么便返回npos。npos的定义:static const size_t npos = -1; 阅读全文
posted @ 2011-07-29 17:23 小卡的土豆园 阅读(6643) 评论(0) 推荐(0)
摘要:查找map<int,int> map_test;map_test.insert(pair<int,int>(1,2));map_test.insert(pair<int,int>(1,3));map_test.insert(pair<int,int>(2,2));int a = map_test[1];int b = map_test[3];map<int,int>::iterator p = map_test.find(4);if(p == map_test.end())b =0;int length = map_test.size 阅读全文
posted @ 2011-07-10 18:28 小卡的土豆园 阅读(338) 评论(0) 推荐(0)
摘要:error c101008a: Failed to save the updated manifest to the file不知为什么,网上查了下只需:在 项目属性-> 清单工具 -> 命令行 -> 附加选项中填写 /validate_manifest LINK : fatal error LNK1168: cannot open Debug/PROGRAM.exe for writing原因是上一次运行该程序框框没关掉或者转成后台运行了。只需要到任务管理器里找到你程序名称对应的.exe进程关闭进程就可以了。 阅读全文
posted @ 2011-07-03 20:22 小卡的土豆园 阅读(197) 评论(0) 推荐(0)