`
webcenterol
  • 浏览: 915321 次
文章分类
社区版块
存档分类
最新评论

列出比较容易忘记的 C++(C)语言语法及标准库

 
阅读更多

列出比较容易忘记的 C++(C)语言语法及标准库 知识点;
Author:kagula LastUpdateInBlogAt:2011-04-07
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
用_access判断文件或文件夹是否存在及其读写权限
http://blog.csdn.net/hurtmanzc/archive/2007/02/13/1508961.aspx
-------------------------------------------------------------------------------------------------------------
使用assert()函数,需要注意,在Debug模式下该语句才会被编译器编译。
-------------------------------------------------------------------------------------------------------------
比特运算符(&)的优先级要低于==、>等运算符!
-------------------------------------------------------------------------------------------------------------
取当前时间
http://bytes.com/topic/c/answers/542675-time_t
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
string和wstring相互转换
http://blog.csdn.net/li_guotao/archive/2008/04/20/2308260.aspx
-------------------------------------------------------------------------------------------------------------
如何將字串前後的空白去除? (C/C++) (template) (boost)
http://www.cnblogs.com/oomusou/archive/2007/02/22/653592.html
-------------------------------------------------------------------------------------------------------------
一个用于Debug的小函数
http://www.wangchao.net.cn/bbsdetail_66023.html
-------------------------------------------------------------------------------------------------------------
string与int/float间的转换
http://www.cnblogs.com/dracohan/archive/2008/12/25/1362616.html
-------------------------------------------------------------------------------------------------------------
class AddFunctor
{
public:
int operator()(int x, int y) const
{
return x + y;
}
};

由于它实现调用运算符,因此可像使用函数一样来使用函数对象:
复制代码
AddFunctor fo;

int result = fo(4, 5);
ASSERT(4 + 5 == result);
-------------------------------------------------------------------------------------------------------------
Q: How could a singleton class be implemented?

A: There are several ways of creating a singleton class. The most simple approach is shown below:

Code:
class CMySingleton
{
public:
static CMySingleton& Instance()
{
static CMySingleton singleton;
return singleton;
}

// Other non-static member functions
private:
CMySingleton() {}; // Private constructor
CMySingleton(const CMySingleton&); // Prevent copy-construction
CMySingleton& operator=(const CMySingleton&); // Prevent assignment
};
---------------------------------------------------------------------------------------------
关于C++ const 的全面总结
http://blog.csdn.net/Eric_Jo/archive/2009/04/30/4138548.aspx
---------------------------------------------------------------------------------------------
如何用vector申请一个多维数组
http://faq.csdn.net/read/139.html
---------------------------------------------------------------------------------------------
运算符重载示例
class test{
friend class test;
friend std::ostream &operator<<(std::ostream &stream,test &a);
friend test& operator>>(std::istream &stream,test &a);
friend test operator+(test &a,test &b); //可以使用c=a+b,d=a+b,则c==d。
public:
test()
{
m_nV=0;
}
test(int a)
{
m_nV=a;
}
test(test &a)
{
m_nV=a.m_nV;
}


test& operator ++() //++c
{
this->m_nV++;

return *this;
}

test& operator++(int) //a++
{
this->m_nV++;
return *this;
}
/*
test& operator+(test &b) //c=a+b,d=a+b结果c<>d,因为第一次a,事实已经变成a=a+b,所以c!=d
{
this->m_nV += b.m_nV;

return *this;
}
*/
test& operator[](int i) //a[任意整数],例:a[5312]
{
return *this;
}

test& operator=(int b)
{
this->m_nV = b;
return *this;
}

private:
int m_nV;
};

std::ostream &operator<<(std::ostream &stream,test &a) //cout<<a<<endl;
{
stream<<a.m_nV;
return stream;
}

test& operator>>(std::istream &stream,test &a) //cin>>a;
{
char t[64];
stream.getline(t,64);
a.m_nV=atoi(t);
return a;
}

test operator+(test &a,test &b)
{
return a.m_nV+b.m_nV;
}
---------------------------------------------------------------------------------------------
map容器的使用
第一步:定义
map<string,string> m_map;
第二步:往里面填东西
m_map.insert(map<string,string>::value_type(key,value)); //string key,value;
//m_map["key"]=strValue; //string strValue;
第三步:找指定key的value
map<string,string>::const_iterator iter = m_map.find(key);
if(iter!=m_map.end())
{
//找到了,返回value
return iter->second;
}
else
{
//没找到
}
//cout<<m_map["key"];
---------------------------------------------------------------------------------------------
友元class,
下面的例子,表示B能访问A的私有成员
class A{
private:
...
friend class B;
};

class B{
friend class A;
...
};

友元函数和友元类
http://www.cppblog.com/twzheng/articles/21020.html
---------------------------------------------------------------------------------------------
如何新建模板类例子
template<class T>class A
{
public:
A(T t)
{
cout<<t<<endl;
}

void sayHello();
};
..............

template <class T> void A<T>::sayHello()
{
cout<<"fasfjasdjkfaskl;!"<<endl;
}
---------------------------------------------------------------------------------------------
大小数端变换
#define CHANGE_ENDING(r) (((r & 0xff)<<24) |((r & 0xff00)<<8) |((r & 0xff0000)>>8) |((r & 0xff000000)>>24))
---------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------
常见问题
http://www.seebs.net/faqs/c-iaq.html
---------------------------------------------------------------------------------------------
初始化类的静态成员变量
class CSpellChecker {
static int m_nRefCount; // How many others are using this?
......
};
intCSpellChecker:: m_nRefCount = 0;
---------------------------------------------------------------------------------------------
C++参考手册
http://www.cplusplus.com/reference/stl/list/
---------------------------------------------------------------------------------------------
如果你想要把自己的Class(含new 、delete内存管理代码)放在STL容器里,正常使用
需要在你的class里实现Copy Constructor Function
再谈拷贝构造函数(Copy Constructor Function)
http://www.cppblog.com/dawnbreak/archive/2009/02/11/68697.html


对需要保存到容器中的对象的类型来说,每个类都必须至少实现拷贝构造函数,最好还能重载赋值操作符。
class TMyClass {
private:
...
public:
TMyClass(..);

// 拷贝构造函数
TMyClass(const TMyClass& obj) { *this = obj; }

// 赋值操作符
TMyClass& operator=(const TMyClass& obj);
...
};
当你把一个对象的实例插入到容器中,STL会自己重新生成一个此对象的拷贝,因此拷贝构造函数就成为必须的了。
如果你没有为拷贝构造函数写正确的代码,
这样,就有可能造成list中对象的某些数据成员没有初始化。

Source:STL使用入门( Using STL) http://oss.org.cn/?action-viewnews-itemid-3746
---------------------------------------------------------------------------------------------
前向引用示例
template <class T> class CCellMemoryContainer;
下面的Class引用CCellMemoryContainer
对CCellMemoryContainer进行定义
---------------------------------------------------------------------------------------------
取int能表示的最大整数

#include <limits>

numeric_limits<int>::max()
---------------------------------------------------------------------------------------------
带可变参数列表的宏定义 可变参数列表在函数中的传递 使用方式举例
...omit...
static void output(std::string strLevel,std::string strFN,int nLine,std::string lpFmt, va_list _ArgList)
{
...omit...
vsprintf_s(Msg,lpFmt.c_str(),_ArgList);
...omit...
}
...omit...
static void err(std::string strFN,int nLine,std::string lpFmt,...)
{
std::string strArgument("Err");
output(strArgument,strFN,nLine,lpFmt, va_list(1+&lpFmt));
}
...omit...
#define info(lpFmt,...) err(__FILE__,__LINE__,lpFmt,## __VA_ARGS__)
...omit...
info("%s %d",strT.c_str(),nT);
...omit...
---------------------------------------------------------------------------------------------
class AddFunctor
{
public:
int operator()(int x, int y) const
{
return x + y;
}
};

由于它实现调用运算符,因此可像使用函数一样来使用函数对象:
复制代码
AddFunctor fo;

int result = fo(4, 5);
ASSERT(4 + 5 == result);
---------------------------------------------------------------------------------------------
测试函数的执行时间(精确到微秒,一毫秒=1000微秒,一秒=1000毫秒)
http://www.cnblogs.com/diylab/archive/2009/01/09/1372313.html
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------

分享到:
评论

相关推荐

    高级语言C++程序设计

    另外在附录中介绍了Visual C++编程环境,列出了最常用的C++标准函数,并对标准模板库(STL)的使用方法与技术做了简要说明。. 本书结构清晰、系统性强、叙述简洁、重点突出,适合作为计算机专业和非计算机专业学生...

    C++入门到精通

    5章的主题 C++标准库提供的容器类型是第 6 章的焦点 我们不是简单地列出所有可用的 操作 而是通过一个文本查询系统的实现 来说明这些容器类型的设计和用法 第 7章到第12 章 第三篇 集中在 C++为基于过程化的程序...

    C语言入门经典(第4版)--源代码及课后练习答案

    IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门经典(第4版)》和《C++入门经典(第3版)》。 译者  杨浩,知名译者,大学讲师,从事机械和计算机方面的教学和研究多年,发表论文数篇,参编和翻译的...

    代码语法错误分析工具pclint8.0

    它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。 C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写...

    《你必须知道的495个C语言问题》

    书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...

    python-3.7.4-docs-html.tar.bz2

    标准库参考 放在枕边作为参考 语言参考 讲解基础内容和基本语法 安装和使用 Python 各种操作系统的介绍都有 如何使用 Python 来做…… 针对特定主题的深入文档 安装 Python 模块 从官方的 PyPI 或者其他来源安装...

    editplus 代码编辑器html c++ jsp css

    对( ) 这样的特殊符号,应该用\( \)来表示,这也是很标准的regexp语法,可以写为 \n 【5】正则表达式应用——删除空行 启动EditPlus,打开待处理的文本类型文件。 ①、选择“查找”菜单的“替换”命令,弹出文本替换...

    你必须知道的495个C语言问题.pdf

    书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。  本书结构清晰,讲解透彻,是各高校...

    C语言FAQ 常见问题列表

    C 语言常见问题集 原著:Steve Summit 翻译:朱群英, 孙 云 修订版 0.9.4, 2005年6月23日 版权所有 © 2005 * 目录 * 1. 前言 * 2. 声明和初始化 o 2.1 我如何决定使用那种整数类型? o 2.2 64 位机上的 ...

    你必须知道的495个C语言问题

    1.28 文件中的第一个声明就报出奇怪的语法错误,可我看没什么问题。这是为什么? 1.29 为什么我的编译器不允许我定义大数组,如doublearray[256][256]? 命名空间 1.30如何判断哪些标识符可以使用,哪些被保留了...

    狂人C程序员入门必备

    第1篇 理解程序设计 第1章 基础知识 1.1 什么是编程 1.1.1 计算机如何工作 1.1.2 内存中的程序是哪里来的 1.1.3 可执行文件的制作 1.1.4 C语言的演化 1.2 怎样用C语言编程 ...第14章 标准库简介 附录 参考文献

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    你必须知道的495个C语言问题(PDF)

    2.4 在C 语言中实现抽象数据类型什么方法最好? . . . . . . . . . . . 7 2.5 在C 中是否有模拟继承等面向对象程序设计特性的好方法? . . . 7 i 目录ii 2.6 我遇到这样声明结构的代码: struct name f int namelen; ...

    c#学习笔记.txt

    本文假定你具备一切学习此语言所需的知识,没有也不要紧,我会在文中尽量列出相关的link,鉴于互联网瞬息万变的特点,若某一链接不可用,请自行至Google查询。 如前所述,我是一个狮子座男人,一度我认为学习Java会...

    公司库存管理系统课程设计报告.doc

    类层次图 (四)界面设计与各功能模块实现 (五)系统调试 调试问题出现的主要问题:编译语法错误及修改,重点是运行逻辑问题修改和调整 (六)使用说明及编程体会 说明如何使用你编写的程序,详细列出每一步的操作...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...

    MySQL 5.1参考手册 (中文版)

    13.3.1. DESCRIBE语法(获取有关列的信息) 13.3.2. USE语法 13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法 13.4.2. 不能回滚的语句 13.4.3. 会造成隐式提交的语句 13.4.4. ...

Global site tag (gtag.js) - Google Analytics