首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

当文件输入流输入字符串数组的时候出现的有关问题

2012-03-18 
当文件输入流输入字符串数组的时候出现的问题用cin流输入到一个字符数组的时候,如果输入太长就会直接截取

当文件输入流输入字符串数组的时候出现的问题
用cin流输入到一个字符数组的时候,如果输入太长就会直接截取其中的一段,但是用文件输入的时候反而出现问题
char buffer[10];
ifstream in;
in.open("a.txt");这个a.txt内容是asdfasdfsadfasdfasdf
in >> buffer;
这个时候会出错,我觉得可能是buffer太小了,改成buffer[100]就没有问题了,不过为什么他不会自动截取大小呢?
或者说这个问题并不是buffer太小
小子我想很久都没有想明白,请高手告诉下。
另外有一个《effective c++》的问题,在规则二里面
#define M(a,b) f((a>b)?a:b)
如果使用M(++a,b)如果a>b的时候,a会自加二次,这个原因是什么?

[解决办法]
1)读取文件是最好用 string,这个简单方便

2)
#define M(a,b) f((a>b)?a:b) 
宏是用替代打方式解决问题的。
那么替代M(++a,b)
就是
f((++a>b)?++a,b)所以执行2此自加了!

[解决办法]
楼主要问的第一个问题是为什么不会自动截取是吗?因为提取符>>是以空格作为分隔字符的,你的文件内容"asdfasdfsadfasdfasdf"又没有空格出现,所以输入流就当作字符串处理了。建议用in.getline(buffer, 10)函数。
第二个问题如楼上所说。

热点排行