Jecho

导航

2013年5月9日 #

泛型<编程>:基于策略的basic_string实现

摘要: 泛型<编程>:基于策略的basic_string实现泛型<编程>:基于策略的basic_string实现Andrei Alexandrescu这个月的返型<编程>部分有两样新的东西。一样是本篇主题——我们会讨论实现标准库部件basic_string(更多作为 string为人所知,为了方便,string是一个basic_string<char>的typedef),一个C++库的重要部件。但 真正有趣的是本篇供下载的代码为了在Visual C++ 6.0下工作做了特别处理,VC6编译器有两个为人所知的矛盾特性——它被广泛使用和它对泛型编程支持极弱。 阅读全文

posted @ 2013-05-09 23:07 Jecho 阅读(364) 评论(0) 推荐(0) 编辑

string中c_str()、data()、copy(p,n)函数的用法

摘要: 标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。1. c_str():生成一个const char*指针,指向以空字符终止的数组。注:①这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中。注意。看下例:?const char* c; string s="1234"; c = s.c_str(); cout<<c<<endl; //输出:1234 s="abcd& 阅读全文

posted @ 2013-05-09 18:37 Jecho 阅读(208) 评论(0) 推荐(0) 编辑

cout cerr clog

摘要: #include <iostream.h> int main() { cout << "hello world---cout" << endl ; cerr << "hello world---cerr" << endl ; clog << "hello world---clog" << endl; return 0; } 在命令行模式下键入下面的命令: test >cout.txt 运行结果是: 在生成的cout.txt文件中输出了" 阅读全文

posted @ 2013-05-09 16:50 Jecho 阅读(190) 评论(0) 推荐(0) 编辑

Array 越界不报错的问题

摘要: C/C++是不检查数组下标是否越界的?奇怪的事情。。。不检查下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降,所以为了程序的运行效率,C/C++才不检查下标是否越界。自己写了一段检测程序测试这个问题,发现如果数组下标越界了,那么它会自动接着那块内存往后写。想了一下明白了,以前说不允许数组下标越界,并不是因为界外没有存储空间,而是因为界外的内容是未知的。也就是说如果界外的空间暂时没有被利用,那么我们可以占用那块内存,但是如果之前界外的内存已经存放了东西,那么我们越界过去就会覆盖那块内 阅读全文

posted @ 2013-05-09 11:24 Jecho 阅读(214) 评论(0) 推荐(0) 编辑