为什么cout未声明

lanhuadou 2009-06-27 08:25:51
我在ubuntu里练了一个小程序,用g++编译,说是cout在此作用域内尚未声明,这是什么原因?
#include <string.h>
#include <iostream>
int main(void)
{
char a[10]={"abcde"},b[]="fgh";
int i=0;
strcat(a,b);
while(a[i++] != '\0') b[i] = a[i];
return 0;
}
...全文
1937 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
车太靓 2010-10-19
  • 打赏
  • 举报
回复
bu cuo a .xin shou
lanhuadou 2009-06-29
  • 打赏
  • 举报
回复
感谢各位!
rejoice914 2009-06-28
  • 打赏
  • 举报
回复
你在胡写
char a[10]={"abcde"};
这是一个
什么?
rejoice914 2009-06-28
  • 打赏
  • 举报
回复

#include <string.h>
#include <iostream>
using namespace std;
int main(void)
{
char a[10]={"abcde"};
char b[]="fgh";
int i=0;
strcat(a,b);
while(a[i++] != '\0')
b[i] = a[i];
cout<<b;
return 0;
}


看完这个帖子,我不仅不能解决问题,反而有个疑问了。
如果把cout <<b改成cout <<a的话,最后竟打印出efgh~
未知这是什么原因……

a是abcde\0\0\0\0\0
b是fgh\0
strcat之后
a是abcdefgh\0\0
while写的很不好
a[i++]在while 里面已经加过了!
因为b数组越界了,导致可能a里面的内容被修改!
所以cout<<a出现问题

有知道的给解释下!这个char a[10] 与char b[]是不是把内存放在一起的?
冥王之锤 2009-06-28
  • 打赏
  • 举报
回复
std::cout
jpchen609 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Loaden 的回复:]
或者:
#include <string.h>
#include <iostream>
using namespace std;
int main(void)
{
char a[10]={"abcde"},b[]="fgh";
int i=0;
strcat(a,b);
while(a[i++] != '\0') b[i] = a[i];
return 0;
}
[/Quote]

同意
zhangzhongke007 2009-06-28
  • 打赏
  • 举报
回复
顶一个~
zhangzhongke007 2009-06-28
  • 打赏
  • 举报
回复
看完这个帖子,我不仅不能解决问题,反而有个疑问了。
如果把cout<<b改成cout<<a的话,最后竟打印出efgh~
未知这是什么原因……
lightair123 2009-06-28
  • 打赏
  • 举报
回复
#include <string.h>
#include <iostream>
using std::cout;
...........................

这样好些,呵呵。
wanlong1215 2009-06-28
  • 打赏
  • 举报
回复
楼上的建议都没采纳吗 ?
cout 是在std里面的
想要cout数据 前面就必须包括 using namespace std;
song_0521 2009-06-28
  • 打赏
  • 举报
回复
名字空间没加上呀,出心的错误
gao416song 2009-06-28
  • 打赏
  • 举报
回复
你可以写#include<iostream.h>

或者写#include<iostream>
using namespace std;



仅仅iostream其实是一个不完整的名称,所以需要namespace std的指出。
就好比有人叫 王小强 ,你可以叫他小强,但是给陌生人介绍时,你要提醒别人:“那个人姓王,我平时只叫他的名,也就是说我一般叫他小强。”
或者你可以这样介绍:“那个人叫 王 小强。”
坚持就是幸福 2009-06-28
  • 打赏
  • 举报
回复
using namespace std;

或者std::cout;
  • 打赏
  • 举报
回复
using namespace std;

或者std::cout

谢谢
blh 2009-06-27
  • 打赏
  • 举报
回复
1、代码加上using namespace std;
2、用std::cout方式使用cout
MichaelBomb 2009-06-27
  • 打赏
  • 举报
回复
cout是std命名空间里的,所以必须
使用std::cout
或者一开始在程序开始处声明
using namespace std;
表示使用命名空间std
amossavez 2009-06-27
  • 打赏
  • 举报
回复
命名空间问题
adventurelw 2009-06-27
  • 打赏
  • 举报
回复
名称空间
using std::cout;
晨星 2009-06-27
  • 打赏
  • 举报
回复
或者
using namespace std;
老邓 2009-06-27
  • 打赏
  • 举报
回复
或者:
#include <string.h>
#include <iostream>
using namespace std;
int main(void)
{
char a[10]={"abcde"},b[]="fgh";
int i=0;
strcat(a,b);
while(a[i++] != '\0') b[i] = a[i];
return 0;
}
加载更多回复(2)

64,282

社区成员

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

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