2014年2月11日
摘要: char temp_file_name[] = "/tmp/temp_file.XXXXXX";//只能用数组,不能写成char *temp_file_name = "..."int fd = mkstemp(temp_file_name);//创建新的临时文件 unlink(temp_file_name);//unlink()会删除参数pathname 指定的文件. 如果该文件名为最后连接点, 但有其他进程打开了此文件, 则在所有关于此文件的文件描述词皆关闭后才会删除. 如果参数pathname 为一符号连接, 则此连接会被删除。 write(fd,& 阅读全文
posted @ 2014-02-11 18:45 lss1990 阅读(2973) 评论(0) 推荐(1) 编辑
摘要: #include#include#includeusing namespace std;extern char ** environ;int main(){ char **var; for(var = environ;*var != NULL;var++) cout<<*var<<endl; char *home = getenv("HOME");//获取当前系统的HOME变量,若系统中当前无该系统变量,返回NULL cout<<"HOME="<<home<<endl; return 0;} 运 阅读全文
posted @ 2014-02-11 17:22 lss1990 阅读(4140) 评论(0) 推荐(0) 编辑
摘要: 在linux下的c++编程中,有三种打印流,stdin,stdout,stderrvoid print_usage(FILE* stream,int exit_code){ fprintf(stream,"Usage: %s options",program_name); fprintf(stream," -h --help show help information\n" " -v --version show version information\n" " -o --output show output fil... 阅读全文
posted @ 2014-02-11 16:29 lss1990 阅读(1971) 评论(0) 推荐(0) 编辑
摘要: int next_option; const char *const short_options = "vho:";//代表可以有三种命令行参数,-v,-h,-o,o后面跟一个冒号代表-o后面需要跟参数,如 -v -h -o test const struct option long_options[] = { {"version",0,NULL,'v'},//第一列是长参数,第二列是1代表后面需要跟参数,0代表不需要跟参数,第四列是短参数,也即-v和--version等价,-h和--help等价,-o和--output等价 {" 阅读全文
posted @ 2014-02-11 15:12 lss1990 阅读(173) 评论(0) 推荐(0) 编辑
  2014年1月13日
摘要: 利用vim进行文件编码批量转换2012-10-23 08:48:41 我来说两句 作者:zhcosin收藏我要投稿利用vim进行文件编码批量转换经常把代码在windows下和 linux 下传来传去,苦于程序源代码文件的编码问题,windows 下是 cp936 格式,linux 下通用 utf-8 格式,发布源代码的时候也需要两种编码各一份,逐个文件的进行编码转换实在是一份让人痛苦不堪的活,好在 vim 有批量编辑文件的功能,这要用到 args 和 argdo 命令,可以查看 :help args 与 :help argdo 以获得详细的说明。这里只说下这两个命令在对文件进行批量转换编码的. 阅读全文
posted @ 2014-01-13 16:54 lss1990 阅读(327) 评论(0) 推荐(0) 编辑
  2014年1月9日
摘要: 1.子类和父类,若父类中某个非虚函数和子类重合(即函数名字和函数形参相同),则若用基类指针指向派生类指针,调用该函数返回基类的结果,若是虚函数,则返回派生类的结果,引用类型的结果类似.若基类中某个函数为虚函数,则由该基类派生出的所有派生类(包括派生类的派生类类型)的该函数都是虚函数.2.在包含有虚函数的基类中,每个类有一个虚函数表,类的第一个变量是一个虚表指针,指针指向这个虚函数表,每个类的虚函数表不一样class A{ int i;public: A():i(10) {}; virtual void h() {cout << "A:h()" << 阅读全文
posted @ 2014-01-09 10:34 lss1990 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 在Linux的VIM下,ctrl+v选中代码块后,就 > 或 < 就可以达到想要的效果。在Win下,ctrl+v 要换成 ctrl+q 阅读全文
posted @ 2014-01-09 10:32 lss1990 阅读(339) 评论(0) 推荐(0) 编辑
  2014年1月8日
摘要: 1.子类和父类,若父类中某个非虚函数和子类重合(即函数名字和函数形参相同),则若用基类指针指向派生类指针,调用该函数返回基类的结果,若是虚函数,则返回派生类的结果,引用类型的结果类似.若基类中某个函数为虚函数,则由该基类派生出的所有派生类(包括派生类的派生类类型)的该函数都是虚函数.2.在包含有虚函数的基类中,每个类有一个虚函数表,类的第一个变量是一个虚表指针,指针指向这个虚函数表,每个类的虚函数表不一样class A{ int i;public: A():i(10) {}; virtual void h() {cout << "A:h()" << 阅读全文
posted @ 2014-01-08 09:37 lss1990 阅读(163) 评论(0) 推荐(0) 编辑
  2014年1月3日
摘要: 1.const变量仍然是一个变量,意味着编译器在编译的过程中要在内存中为该变量分配一个地址,而常数则是意味着只是记载在内存表里的一个数或者字符串.2.const变量必须在定义时进行初始化,除非是一个extern全局变量.3.假设有一个变量extern const int bufsize;则buffsize变量在作用域内是不能被修改的,而真实的buffsize(即在其他出定义的buffsize)就不一定是const类型,而且extern const 类型的变量也是不能作为数组大小进行数组定义,因为编译器无法知道该值的大小.4.const变量的值如果是在编译时就确定了,它可以作为数组的长度进行数组 阅读全文
posted @ 2014-01-03 18:32 lss1990 阅读(176) 评论(0) 推荐(0) 编辑
摘要: inline函数会在该函数出现的地方用整个函数体替代,减少了函数的压栈出栈,用空间换取时间性能的提高.但递归函数无法是inline,因为递归本身就涉及到堆栈.g++保存汇编代码 g++ main.cpp --save-temps 阅读全文
posted @ 2014-01-03 18:08 lss1990 阅读(172) 评论(0) 推荐(0) 编辑