【发布时间】:2012-04-05 11:21:45
【问题描述】:
我在 Visual C++ 2010 上运行这段代码
char c[10];
cin.get(&c[0],5);
cin.get(&c[2],4);
cout << c << endl;
如果我将“123456789”输入cin,cout 子句将打印“12567”,这是我预期的结果。
但如果我写:
char c[10];
cin.getline(&c[0],5);
cin.getline(&c[2],4);
cout<< c <<endl;
输入相同的字符串,它只会显示“12”,其中 c=={'1','2','\0','4','\0'}
根据documentation,cin.get和cin.getline的区别在于cin.get不会像cin.getline那样丢弃delim字符,所以不知道为什么会这样。谁能给我提示?
【问题讨论】:
-
绝对不能在不检查返回值的情况下使用 I/O 函数。
-
eofbit、badbit等是什么样的?
-
@user1200129 是的,我检查了三个位,“失败位”是真的,但我不知道为什么。
-
你认为这不值得一提吗?这意味着你的结果完全没有意义,而且你已经知道了。
-
@LightnessRacesinOrbit 我的疏忽。