我分析了一下应该是:
str数组的第一个元素已初始化为'a', 并且cin.read(str+1, 8) 这里也跨过了第一个元素, 从str[1]处开始传递, cout.write(str, cin.gcount()); // cin.gcount()返回的是cin流有效传递了8个字符到str, 第二个参数是8, 如图, 从a开始数, 总共是8位字符是没错的, 算str[0]位置的'a', cout.write(str, cin.gcount()+1); 这样写就是输出9位字符, read(), writer()是IO流操作2进制用的, 还可以用cout.write((char*)& str, sizeof(str));把str内存的数据全部传递到cout流, 我看书都没学到gcount(), 百度了一下