上一页 1 ··· 4 5 6 7 8 9 10 11 下一页

2012年4月16日

摘要: 源文件中有#include<~.h>的预处理命令,但是头文件中没有源文件的信息,那么头文件如何来关联源文件呢,曾经这个问题困扰着我。这个问题实际上是说,已知头文件“a.h”声明了一系列函数,“b.cpp”中实现了这些函数,那么如果我想在“c.cpp”中使用“a.h”中声明的这些在“b.cpp”中实现的函数,通常都是在“c.cpp”中使用#include “a.h”,那么c.cpp是怎样找到b.cpp中的实现呢?其实.cpp和.h文件名称没有任何直接关系。#include预处理就是完成了一个“复制并插入代码”的工作。编译的时候,并不会去找b.cpp文件中的函数实现,只有在link的时 阅读全文
posted @ 2012-04-16 23:49 NLP新手 阅读(2147) 评论(0) 推荐(0) 编辑
摘要: pragma,编译指示命令。在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。1.#pragma message(“消息文本”)当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望 阅读全文
posted @ 2012-04-16 22:11 NLP新手 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 1.一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。 其中#else部分也可以没有,即: #ifdef 程序段1 #denif2.为了避免同一个文件被include多次(1) #ifnde... 阅读全文
posted @ 2012-04-16 21:30 NLP新手 阅读(403) 评论(0) 推荐(1) 编辑
摘要: 1.效果-《高质量C++/C编程指南》C++ 语言可以用const 来定义常量,也可以用#define 来定义常量。但是前者比后者有更多的优点:(1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。(2) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。规则5-2-1:在C++ 程序中只使用const 常量而不使用宏常量,即const 常量完全取代宏常量。2.实现机制宏是预处理命令,即在预编译阶段进行字节替换。const常量是变量,在 阅读全文
posted @ 2012-04-16 21:15 NLP新手 阅读(20644) 评论(3) 推荐(7) 编辑

2012年4月15日

摘要: 题目:10个人10顶帽子,每顶帽子上有1-10中的一个数字,这些数字有可能重复 ,每个人只能看到其他9个人头上帽子上的数字,看不到自己的帽子上的数字 。这时要求每人同时写出一个数字 。问,是否存在一个策略使得,至少有一个人写出的是自己头上帽子的数字?如果存在,请给出一个具体的策略;如果不存在,请给出严格的证明。解:假设每个人帽子上的数字为Xi,i=1,2,...,10。则Xi与Xj是相互独立的,取值完全随机。这里10个人只有1个共性,那就是10个数之和是相同的,记为S。第i个人可以看见其余9个数字,可计算出Si=S-Xi。由此可知对于第i个人而言,Si为已知数,Xi与S为未知数,且Xi+Si= 阅读全文
posted @ 2012-04-15 19:46 NLP新手 阅读(1027) 评论(0) 推荐(0) 编辑
摘要: 1 //<HuffmanGKM.h> 2 #include "stdafx.h" 3 #include <string> 4 5 using std::string; 6 7 const int CHNUM=256; //字符数 8 const int PLUS=128; //字符下标偏移量 9 struct WeightGkm //字符频度结构,包含频度和字符值10 {11 unsigned long w;12 char c;13 };14 typedef struct HTNode //huffman树结构... 阅读全文
posted @ 2012-04-15 09:58 NLP新手 阅读(3489) 评论(0) 推荐(0) 编辑
摘要: (源自:百度百科)概念 std::cerr是ISO C++标准错误输出流,对应于ISO C标准库的stderr。与std::cout不同,ISO C++要求当cerr被初始化后,cerr.flags() & unitbuf非零(保证流在每次输出操作后被刷新),且cerr.tie()返回&cout。[1]即cerr默认和cout同步但无缓冲。cerr与cout的区别 cout对应于标准输出流,默认情况下是显示器。这是一个被缓冲的输出,可以被重定向。 cerr对应标准错误流,用于显示错误消息。默认情况下被关联到标准输出流,但它不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到 阅读全文
posted @ 2012-04-15 08:06 NLP新手 阅读(2098) 评论(0) 推荐(1) 编辑

2012年4月14日

摘要: (源自:http://blog.csdn.net/fireway2009/article/details/7313341)ASCII文件,或称字符文件。程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符。对ASCII文件的读写操作可以用以下两种方法:(1) 用流插入运算符“<<”和流提取运算符“>>”输入输出标准类型的数据。 A、插入器(<<) 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'\n' 阅读全文
posted @ 2012-04-14 22:54 NLP新手 阅读(317) 评论(0) 推荐(0) 编辑
摘要: Huffman压缩编码问题,编码问题解决后,剩下的就是如何能够按位操作文件,以真正实现文件压缩。如果只是把编码按char甚至int输入文件,那么得到的压缩文件会更大。但是C语言的文件操作也有其特点,就是无论写入还是读取都是以byte为单位,而不能按位操作。这样一来,就需要我们采取一些特殊手段。比较容易想到的是把要输送的位串以8个bits,即一个byte为单位打包,然后按字节写入。读取时先按照byte读取,然后在根据写入方法的逆,转变成原代码。由于C语言类型的灵活性,对于char类型可以使用移位运算,这就使事情简单多了。假设欲传送的位串,每个位都以char表示,存放于一个char *string 阅读全文
posted @ 2012-04-14 13:27 NLP新手 阅读(302) 评论(0) 推荐(0) 编辑

2012年4月13日

摘要: <cctype>中定义的函数:isalnum(a) 如果c是字母或数字,则为true。isalpha(a) 如果c是字母,则为true。iscntrl(c) 如果c是控制字符,则为true。isdigit(c) 如果c是数字,则为true。isgraph(c) 如果c不是空格,但可打印,则为true。islower(c) 如果c是小写字母,则为true。isprint(c) 如果c是可打印的字符,则为true。ispunct(c) 如果c是标点符号,则为true。isspace(c) 如果c是空白字符,则为true。isupper(c) 如果c是大写字母,则为true。is... 阅读全文
posted @ 2012-04-13 13:00 NLP新手 阅读(342) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 下一页

导航