C++程序设计语言(特别版)中的一个习题

ian_0126 2010-04-13 07:40:51
第七章的练习题9
参照答案的实现方式在vc下编译报错
具体代码如下:
int main(int argc, char* argv[])
{
char* key = (argc >= 2) ? argv[1] : "";
char ch;
size_t key_length = (argc >= 2) ? strlen(key) : 1;
for (size_t k = 0; cin.getc(ch); k = (k+1)%key_length)
cout.putc(ch ^ key[k]);
return 0;
}
编译报错:
test.cpp(13) : error C2059: syntax error : '('
test.cpp(13) : error C2039: 'k' : is not a member of 'basic_istream<char,struct std::char_traits<char> >'
test.cpp(13) : error C2039: 'k' : is not a member of 'basic_istream<char,struct std::char_traits<char> >'
test.cpp(13) : error C2039: 'key_length' : is not a member of 'basic_istream<char,structstd::char_traits<char> >'
test.cpp(13) : error C2143: syntax error : missing ';' before ')'
test.cpp(14) : warning C4003: not enough actual parameters for macro 'putc'
Error executing cl.exe.

test.exe - 5 error(s), 1 warning(s)

期待高手指点:) 多谢了!
PS:将
cin.getc(ch);和cout.putc(ch ^ key[k]);用get() 和put()替换编译可以通过
那C++标准库的cin 和 cout为什么不行呢
希望高手介绍个C++标准库的手册,CSDN感觉MFC的比较多,乱!
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljx87085210 2010-04-14
  • 打赏
  • 举报
回复
另外就是给你说一点学习的方法,遇见这样的问题,肯定要怀疑 getc和get的区别是吧,为什么一个另一个就不行,那你去网上搜一下“..和..”,一般肯定都有人问过,所以会有现成的答案。另外身边最好有一本权威点的教材,这样可以和网上的知识相互印证。
ljx87085210 2010-04-14
  • 打赏
  • 举报
回复
我都让你误导了,试了半天,cin.getc()有这个用法么,我只见过cin.get()。
getc用法是这样的char ch = getc(fp);

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧