明明本身就是长度了还用sizeof
Posted NightPoetry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了明明本身就是长度了还用sizeof相关的知识,希望对你有一定的参考价值。
char* jname = new char(hClip.clipNameNum);
file.read((char*)jname, hClip.clipNameNum);
cout <<"old name"<<string(jname)<<endl;
char* jname = new char(hClip.clipNameNum);
file.read((char*)jname,sizeof(hClip.clipNameNum));
cout <<"old name"<<string(jname)<<endl;
第一段是正确的,第二段是错误的。我将要读取的长度存入hClip.clipNameNum,但是读取的时候却对其取了sizeof,得到的自然是int的长度,永远为4,而我要读取的长度在这里只有2,导致永远多了两字节,我百思不得其解。但是我又不能简单粗暴的直接-2调整读取位置,因为这里的读取长度不一定是2(如果这里永远是2的话,我可能直接-2了事,应急处理bug 的时候这样做可行)。直到我突然意识到,我为嘛要取sizeof???
错误难度:1
错误的愚蠢程度:5
耗时:1.5h
以上是关于明明本身就是长度了还用sizeof的主要内容,如果未能解决你的问题,请参考以下文章
spring mvc后台的API,测试中,总提示接口实体的某一个字段不能为null,但是明明给值了还提示不能为空