文件:C:\\Users\\Administrator\\Desktop\\sourcedata\\bj922690.08O
对文件的说明:每行80个字节
困惑1 and 困惑2
如下代码:
ifstream ifile("C:\\Users\\Administrator\\Desktop\\sourcedata\\bj922690.08O");
char buffer[75];
string data;
ifile.getline(buffer,81,'\n');
data=buffer;
cout<<data.length()<<endl;
输出结果为:80。
困惑1:buffer的空间为75,除去最后一个结尾符'\0',就是74,那么将它赋给data,data的length照理说也是74。
困惑2:buffer的空间设为75,很明显是空间是不够的,因为每行是80个字节,为什么不报错。
困惑三
将代码变化一下,改变buffer的空间。
ifstream ifile("C:\\Users\\Administrator\\Desktop\\sourcedata\\bj922690.08O");
char buffer[60];
string data;
ifile.getline(buffer,81,'\n');
data=buffer;
cout<<data.length()<<endl;
此时报错,如图:
困惑3:改为buffer[60]后为什么就报错?
困惑4
代码再变化一下,如下:
ifstream ifile("C:\\Users\\Administrator\\Desktop\\sourcedata\\bj922690.08O");
char buffer[81];
string data;
ifile.getline(buffer,79,'\n');
data=buffer;
cout<<data.length()<<endl;
输出结果:78。
困惑4:为什么输出结果会是78,,设定的读取宽度是79个字节,那么输出结果应该是79。