c++ 语言细节
tyt2222008
定力如磐,行走无疆
展开
-
C++ 高精度计算程序运行时间的程序
#include #include using namespace std ;int main(void){ LARGE_INTEGER BegainTime ; LARGE_INTEGER EndTime ; LARGE_INTEGER Frequency ; QueryPerformanceFrequency(&Frequency); QueryPerformanceCounter(&BegainTime) ; //要测试的代码放在这里 QueryPerf转载 2010-09-06 14:52:00 · 894 阅读 · 0 评论 -
一种代码风格:减少assert(...); 缩进
由于assert(...); 语句的作用是为了放置一个验证条件,其功能与一般的功能语句不同,如果不同功能代码都用同样的缩进,这样就会用代码阅读起来不清晰,例如:....assert(k>0);int col_num = this->numcols();assert(col_num >0);int row_num = this->numrows();int i =0;int j = ++i;int arr_index = r * col_num + c ;assert(arr_index ... 和以下的代码原创 2010-11-25 10:10:00 · 693 阅读 · 0 评论 -
error C2065: “PCONTEXT”: 未声明的标识符 -----问题解决
<br />一开始 我只 写了一行:<br /> <br />#include <windef.h><br /> <br />编译时就出现以下错误:<br /> <br />1>c:/program files/microsoft sdks/windows/v6.0a/include/winnt.h(5547) : error C2146: 语法错误 : 缺少“;”(在标识符“ContextRecord”的前面)1>c:/program files/microsoft sdks/windows/v6.0原创 2011-03-09 15:04:00 · 20914 阅读 · 3 评论 -
代码风格: 尽量少用 break 跳出循环
<br /> <br /> <br />如果while 或 for 循环里有 break; 这样的跳出语句,那么这样会导致循环体不够清晰,还不如在循环体 的结束 条件 里 && 一些条件,使得所有的判断都在结束条件声明那里看得到。<br /> <br />int i = 8, j = 0 ;<br />while ( i < 0 )<br />{<br />if( j > 9 )<br />break;<br />++j;<br />++i ;<br />}<br /> <br /> <br />改成:<b原创 2011-03-10 12:43:00 · 1249 阅读 · 0 评论 -
【转】C语言判断文件是否存在
C语言判断文件是否存在用函数access,头文件是io.h,原型: int access(const char *filename, int amode); amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 这个函数还可以检查其它文件属性: 06 检查读写权限 04 检查读权限 02 检查写权限 01 检查执行权限 00 检查文件的存在性在UNIX和VC下实验成功。好处是 fopen(..,"r")不好,当无读权限转载 2011-03-09 17:35:00 · 1291 阅读 · 0 评论 -
double 转成 float 时,数据会丢失
例如以下语句: float floatVal = 3.15884534;这个 3.15884534 会变成 3.15885 保存在 floatVal 中。即float 约 精确到 小数点后第四位原创 2011-03-14 20:03:00 · 7136 阅读 · 0 评论 -
学习MFC(1)
<br />C++与C开发windows应用程序的区别C语言:<br />使用一个窗口句柄HWND完成窗口的各种操作(WND是windows的内部私有结构)C++:<br />使用CWndWindows窗口和CWnd的区别<br />CWnd由构造函数创建;<br />Windows窗口由CWnd的Create函数创建<br /> CWnd类<br />操作一个HWND类型的数据成员:m_hWnd.◆句柄和指针的区别<br />指针对应一个数据在内存中的地址,指针可以自由修改数据<br />句柄并不能直接操原创 2011-03-28 17:56:00 · 736 阅读 · 0 评论 -
使用双向文件流来对文件同时读写
这是在《C++高级编程(Professional C++)》上看到的例子。BTW,这真是一本很好的书,适合高阶的C++开发者阅读学习!void changeNumberForID( const string& inFileName, int inID, const string& inNewNumber){ fstream ioData( inFileName.c_str() ); if( !ioData ) { cerr > id; //check to s原创 2011-03-30 11:14:00 · 1711 阅读 · 0 评论 -
MFC学习笔记(2)
<br />看了孙鑫老师的视频,对vc++的一些概念有所了解。<br /> <br />以下 是第一课时的笔记:<br /> <br /><br />关于消息,是用以下的数据结构来实现的:<br /> <br />typedef struct tagMSG {<br /> HWND hwnd; <br /> UINT message; <br /> WPARAM wParam; <br /> LPARAM lParam; <br /> DWORD time;原创 2011-03-31 18:43:00 · 951 阅读 · 0 评论 -
一种处理从文件读取整数的方式
<br />在CSDN上看到这个疑问,看到有人回答,于是摘抄下来,以备下次参考。<br /> <br />#include "stdafx.h"#include <iostream>#include <fstream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ const char* FILE_NAME = "E://tmp.txt"; fstream in(FILE_NAME); if(!in原创 2011-04-02 00:35:00 · 1260 阅读 · 0 评论 -
在使用stringstream读文件行时,要注意把该对象放在循环内
<br />在使用stringstream读文件行时,要注意把该对象放在循环内:<br /> <br /> ifstream ifstr( tableFileName ); string line ; while( !ifstr.eof() ) { stringstream lineStr; getline( ifstr, line ); lineStr << line.data() ; //use the lineStr } <br原创 2011-04-10 16:35:00 · 1599 阅读 · 0 评论 -
general error c101008d:...Access is denied 问题解决
当我用visual studio2010 compile zeromq 2.1.11的时候,总有access denied. 我就把zeromq 文件夹的security. 错误信息: general error c101008d: Failed to write the updated manifest to the resource of file "../../../bin/原创 2012-11-15 02:51:33 · 1196 阅读 · 0 评论 -
如何在Windows下用命令行编译C/C++文件
按照这个说的去做了:http://msdn.microsoft.com/en-us/library/ms235639%28v=vs.80%29.aspx但是,仍有一个问题:如果没有安装Visual Studio,那怎么办?是不是就不能编译C/C++文件了呢?编程的一大问题就是,环境的配置太麻烦, 无论是linux还是windows, 真的很不友好。能不能有一些简单的方法来配置好东西原创 2012-11-14 13:37:52 · 1936 阅读 · 0 评论 -
Microsoft Visual Studio 2010 Fatal Error C1853 的解决
问题是 在c++项目里编译 .c 文件造成的去项目 properties-> configuration properties->C/C++ -> Precompiled Headers, 右边第一行:选not using precompiled Headers.原创 2012-11-16 04:20:03 · 2781 阅读 · 0 评论 -
《unix环境高级编程》APUE 习题5.4 的解答
题目:5.4 下面的代码在一些机器上运行正确,而在另外一些机器运行时出错,解释问题所在。 #include int main(void) { char c; while((c = getchar()) != EOF)原创 2013-03-16 17:56:37 · 1414 阅读 · 0 评论 -
可以用继承来获得更好的重用结构
现在有一个class Matrix , 它的职责是一个表示一个矩阵的数据结构。 而 我现在 要将这个矩阵用在特列的地方,因此要加一些方法,例如 打印 void print(); 再例如 把这个矩阵分成四个小矩阵, split()等功能,我一直以来的做法(称为A做法) 是,把这个矩阵拷过来,然后改个名字,例如 Special_Matrix , 然后再在里面写新的方法(这个称为B做法)后来想到了 用继承的方法,直写一个新类Special_Matrix ,继承原来的 Matrix ,这样做有这些优点:1. 当 原原创 2011-01-15 16:41:00 · 742 阅读 · 0 评论 -
const char* 可以用 char* 初始化
char* f(){ char* ret = "asdf"; return ret;}main(){ const char * p = f(); // no error return 0;}原创 2010-11-17 09:47:00 · 3746 阅读 · 0 评论 -
fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
为了探录c++ 风格的fstream与 C 风格(例如fread 和 fwrite )两种读写文件的方法的效率,我特意做了两个实验。我的机器是Windows XP, Visual Studio 20081. 测试写文件速度程序设计思路: 将TEST_SIZE个字符用两种方式写入文件,记录两种方式的耗时。实验代码:void test_write(){ const int TEST_SIZE = 10000000 ; const char* c_plus_write_file = "H://c_p原创 2010-12-21 10:08:00 · 11880 阅读 · 6 评论 -
C++ : 重命名 及 删除文件 (C 风格)
函数名: rename 功 能: 重命名文件 用 法: int rename(char *oldname, char *newname); 程序例: #include int main(void) { char oldname[80], newname[80]; /* prompt for file to rename and new name */ printf("File to rename: ");原创 2010-12-12 15:43:00 · 2845 阅读 · 0 评论 -
STL中map用法详解(转)
<br /><br />Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。<br />下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号转载 2010-12-13 10:23:00 · 619 阅读 · 0 评论 -
C++: int to string
<br />1. 用strstream <br /> <br />#include <strstream>int hello=4;strstream ss;ss<<hello;string s=ss.str();//调用string的方法cout<<s.c_str()<<endl <br /> <br />2. 用itoa<br /> <br /> #include <stdlib.h>char buffer[20]; int i = 3445; _itoa原创 2010-12-12 15:41:00 · 759 阅读 · 0 评论 -
在拷贝(复制)代码前,应该确呆所复制的代码是正确的
<br /> <br />1. 拷贝代码是很危险的,虽然提高了效率,但往往因为拷贝的目标位置 与 源位置相比,有不同的需求<br /> <br />我常常遇到这种情况:<br /> <br /> 1. 拷贝一段代码以后,对代码进行修改,但注释忘记修改了;于是以后回来看到这段 注释与代码 不致的程序时,很有可能我被注释误导了。<br /> <br /> 2. 如果拷贝的代码是不正确的,以后debug就要做很多件事情。原创 2010-12-12 16:34:00 · 954 阅读 · 0 评论 -
C++ 文件操作小结(1)
1. 创建文件//create a new fileFILE* f = fopen ( file_name , "a"); fclose(f); 具体参数用法,参见 http://baike.baidu.com/view/656681.htm2. 读入文件一行 getline 操作:ifstream ifstr(file_name);string line;while(!ifstr.eof()){ getline(ifstr,line);} 3. 文件的删除与重原创 2010-12-13 09:08:00 · 565 阅读 · 0 评论 -
cout输出二进制数(转)
<br />#include <iostream>#include <bitset>using namespace std;int main(){ int i; cin>>i; cout<<"binary format of"<<i<<" is "<<bitset<sizeof(int)*8>(i)<<endl;} <br /> <br />C/C++里面只能支持八、十、十六进制三种<br />数字型常量。 <br /> <br /> 如果真转载 2010-12-13 15:35:00 · 3358 阅读 · 1 评论 -
关于bitset
<br /> <br /> <br />bitset.at(0) ; 返回的是最低的二进制码<br /> <br />index 越小,位数越低<br />原创 2010-12-16 16:03:00 · 549 阅读 · 0 评论 -
STL中List 的sort 比较 用法示例
<br />#include <string>#include <list>#include <algorithm>#include <iostream>using namespace std;bool op(string str1, string str2){ return str1.length() < str2.length();}int main(int argc, char* argv[]) { list <string> list_sto转载 2010-12-13 15:17:00 · 1135 阅读 · 0 评论 -
cout输出16进制数(转)
<br />cout输出16进制2010-02-09 18:21<br />#include "stdafx.h"<br />#include "stdlib.h"<br />#include "iostream"<br />#include<iomanip> <br />using namespace std;<br />int _tmain(int argc, _TCHAR* argv[])<br />{<br />unsigned int i = 0;<br />int temp = (int)i转载 2010-12-13 15:29:00 · 3350 阅读 · 0 评论 -
std list 的使用总结
<br /> <br />因为之前老忘记list的用法,造成时间浪费,故此总结,以后不再犯同样的错误<br /> <br />1. include 的文件<br /> <br />include <list><br />using namespace std;<br /> <br />2. 遍历<br /> <br />list<char> char_list;<br /> <br />for(list<char>::iterator it=char_list.begin(); it!=char_list.原创 2010-12-16 16:21:00 · 1515 阅读 · 0 评论 -
如何将单个char c转成string
<br />由于string 是没有类似于 string(char c); 的构造函数的,所以思路是把char转成char* 或 char[], 再用string 的构造函数string(char*) 构造string <br /> <br />示例代码如下:<br /> <br /> <br />char c = 'a' ;<br /> <br />char tmp[1];<br /> <br />tmp[0] = c ;<br /> <br />string result(tmp,1); //要用第二个原创 2010-12-17 22:17:00 · 2589 阅读 · 0 评论 -
在Ascii 码表内,还有几个类似于 LF (NL line feed, new line) 换行键这样的字符要作特殊处理
如题,附ascii码表的 地址:http://baike.baidu.com/view/15482.htm原创 2010-12-20 00:30:00 · 2159 阅读 · 0 评论 -
c++文件操作转贴(未整理)
fopen fdopen freopen 的区别2007-01-31 14:57#include FILE *fopen(const char *path, const char *mode); FILE *fdopen(int fildes, const char *mode); FILE *freopen(const char *path, const char *mode, FILE *stream); DESCRIPTION 描述函数 fopen 打开 一个 文件,转载 2010-12-18 19:49:00 · 1071 阅读 · 0 评论 -
探寻C++最快的读取文件的方案(转)
转载自:http://www.byvoid.com/blog/fast-readfile/在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中很不错,但具体如何从没试过,因转载 2010-12-18 19:56:00 · 957 阅读 · 1 评论 -
《Unix环境高级编程》读书笔记(1)
#include "apue.h"int glob = 6; /* external variable in initialized data */char buf[] = "a write to stdout\n";intmain(void){int var; /* automatic variable on the stack */pid_t pid;var = 88;if原创 2013-03-17 00:13:39 · 998 阅读 · 1 评论