困惑 关于std::

taurusbbstech 2008-04-14 01:03:58
#include <cstring>
std::strncpy(firstname, fn, LIM - 1);
我不停地看到这样的用法,但是很多人都告诉我这样用不对,请问到底在什么前提下,这样用是可行的?谢谢!
...全文
268 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangliest 2009-07-27
  • 打赏
  • 举报
回复
同意29楼观点
lihui5134 2008-06-13
  • 打赏
  • 举报
回复
估计一些C++编译器没有把strncpy增加到std的名字空间中,因此会提示strncpy is not a member of std。这种情况下,就只有去掉std::前缀了。我在VC++6.0中同样遇到这一问题。去掉前缀可以解决。
rushman 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 taurusbbstech 的回复:]
我试了一下
用using namespace std;就会出错
用namespace std{using::strncpy;}就不出错
[/Quote]
这不是已经说明问题了吗!strncpy 不在 namespace std 里面。
不要什么都得和别人一模一样,产生差异的可能有很多,找到解决自己问题得办法就好。
overbai 2008-04-15
  • 打赏
  • 举报
回复
如果用命名空间,那么#include<string.h> 中就不能加.h;
而且使用命名空间时最好想使用using 指示即using +命名空间成员;
而不要使用using 声明即using namespace +命名空间名称;因为会带来二义性;
可以阅读C++ Primer
two_ears 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 taurusbbstech 的回复:]
我试了一下
用using namespace std;就会出错
用namespace std{using::strncpy;}就不出错
[/Quote]
呵呵,太牛了
你这是给std里加了一个名字,自然后面的std::strncpy就正确了
yuyunliuhen 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 steedhorse 的回复:]
C++标准库的大多数东西都是放在名字空间std中的。
[/Quote]
hhl1234 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 f22fbi 的回复:]
std是个命名空间,std::strncpy表示strncpy这个名称在std折个命名空间里
可以在代码开头加上using namespace std;这样就不必加上std::了
[/Quote]
晨星 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 taurusbbstech 的回复:]
用这句话会出错啊,不然我还在这纠缠什么呢..
[/Quote]
那只能说是其它的文题,而不是名字空间方面的问题。你代码帖的少了。
晨星 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 sun3411 的回复:]
<cstring>里面的不在std命名空间下吧, c库
[/Quote]
在的,这也正是cstring跟string.h这两个头文件的区别。后者才是标准的“C库”。
sun3411 2008-04-14
  • 打赏
  • 举报
回复
<cstring>里面的不在std命名空间下吧, c库
taodm 2008-04-14
  • 打赏
  • 举报
回复
你不会用的VC6这个垃圾货吧?
taurusbbstech 2008-04-14
  • 打赏
  • 举报
回复
用这句话会出错啊,不然我还在这纠缠什么呢..
godspeed_wxw 2008-04-14
  • 打赏
  • 举报
回复
哎!! 楼主啊,听人劝吃饱饭
using namespace std;
taurusbbstech 2008-04-14
  • 打赏
  • 举报
回复
真的没人理了...555555
我自己去搜搜吧...
taurusbbstech 2008-04-14
  • 打赏
  • 举报
回复
没人理我了..难道又是我表达的不清楚么?
薛定谔之死猫 2008-04-14
  • 打赏
  • 举报
回复
using namespace std;

一劳永逸

::可用于成员,也可用于分割名称空间前缀
taurusbbstech 2008-04-14
  • 打赏
  • 举报
回复
我试了一下
用using namespace std;就会出错
用namespace std{using::strncpy;}就不出错
jieao111 2008-04-14
  • 打赏
  • 举报
回复
自己搜索。名字空间域
regcwt 2008-04-14
  • 打赏
  • 举报
回复
#include <string>
using namespace std;
c++方式
taurusbbstech 2008-04-14
  • 打赏
  • 举报
回复
谢谢大家,我最想知道的是,为什么会出'strncpy' : is not a member of 'std'这样的错误提示,我只有把std::去掉,才能编译通过.
加载更多回复(10)

64,653

社区成员

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

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