1.筛选器:筛选器是一个逻辑目录,新建的时候并不在文件资源管理器中新建,只在解决方案资源管理器中新建并显示。如果更改了项目文件夹名称,相应项目中的筛选器会自动消失。
2.string与char:部分从数据库中读取的数据可能用string无法读取(例如二进制的BLOB数据块),此时可以用一个数据结构保存BLOB的相关信息
struct data
{
int size; //保存数据块的尺寸
char* c; //保存数据块的首地址
}
3.把过大的数据写入文件:
不能直接定义一个string然后输出,有两个原因:(1)string是定义在栈上的,栈空间有限,内存不足会报错;(2)数据中可能会有\0字符,string在写入文档时,遇到“\0”会误以为已经到达结尾
最好用malloc在堆上分配内存写入的方式,例如:
fstream out("a.txt", ios::out | ios::binary);
int size = value.size(); //value为string类型的数据,存有数量较大的内容
char* p = (char*)malloc(size);
memcpy(p, value.data(), size);
if (out.is_open()){
out.write(p, size);
}
out.close();
free(p);
p = NULL;
4.报错:vector处报错 error C2088: “[”: 对于 class 非法
很可能是vector重复定义了。
5.snprintf函数在vs、vc编译器中是_snprintf;