24小时热门版块排行榜    

查看: 4130  |  回复: 10

zxx921212

铁杆木虫 (正式写手)

[求助] C++新手,现要实现字符串的复制,不允许用strcpy()函数,需要如何编写,急求!! 已有2人参与

C++新手,现要实现字符串的复制,不允许用strcpy()函数,需要如何编写,急求!!
回复此楼
每天一点小精彩
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

指针 加 字符数组  轻松搞定
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
2楼2014-07-07 12:02:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zxx921212

铁杆木虫 (正式写手)

引用回帖:
2楼: Originally posted by baobiao007 at 2014-07-07 12:02:39
指针 加 字符数组  轻松搞定

可以具体说下嘛?

[ 发自小木虫客户端 ]
每天一点小精彩
3楼2014-07-07 14:21:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cooooldog

铁杆木虫 (著名写手)

ส็็็

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
zxx921212: 金币+2, 有帮助 2014-07-07 20:09:44
引用回帖:
3楼: Originally posted by zxx921212 at 2014-07-07 14:21:45
可以具体说下嘛?
...

可以用
#include <iterator>
using namespace stdext;
里面的
stdext 类里面定义的字符串操作函数来实现

一个现成的例子是
CODE:
        std::string creationStr ="xxxxxxxx";
                char * nCreationStr = new char[creationStr.size() + 1];
                stdext::checked_array_iterator<char *> chkd_test_array(nCreationStr, creationStr.size() + 1);
                std::copy(creationStr.begin(), creationStr.end(), chkd_test_array);// nCreationStr);
                nCreationStr[creationStr.size()] = '\0';

ส็็็็็็็็็็็็็็็็็็็็
4楼2014-07-07 18:14:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

绿遍山原

铜虫 (小有名气)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
zxx921212: 金币+2, ★★★很有帮助 2014-07-07 20:08:58
zxx921212: 金币+1, ★★★很有帮助 2014-07-07 21:33:18
strcpy实现很简单啊,K&R的书里面就有。
void mycopy(char *str, char *des)
{
    while ((*des) = (*str++)) des++;
}
要夢遊,不要催眠。
5楼2014-07-07 19:05:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

绿遍山原

铜虫 (小有名气)

引用回帖:
5楼: Originally posted by 绿遍山原 at 2014-07-07 19:05:15
strcpy实现很简单啊,K&R的书里面就有。
void mycopy(char *str, char *des)
{
    while ((*des) = (*str++)) des++;
}

有个bug
最好写成这样:
void mycopy(char *str, char *des)
{
    if (str == des) return;
    while ((*des++ = *str++));
}
要夢遊,不要催眠。
6楼2014-07-07 19:17:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zxx921212

铁杆木虫 (正式写手)

引用回帖:
6楼: Originally posted by 绿遍山原 at 2014-07-07 19:17:39
有个bug
最好写成这样:
void mycopy(char *str, char *des)
{
    if (str == des) return;
    while ((*des++ = *str++));
}...

要是不用指针能做吗?

[ 发自小木虫客户端 ]
每天一点小精彩
7楼2014-07-07 20:09:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zxx921212

铁杆木虫 (正式写手)

引用回帖:
4楼: Originally posted by cooooldog at 2014-07-07 18:14:38
可以用
#include <iterator>
using namespace stdext;
里面的
stdext 类里面定义的字符串操作函数来实现

一个现成的例子是

        std::string creationStr ="xxxxxxxx";
                char * nCreation ...

其实吧没怎么看明白,对C++知道的甚少,还是谢谢啦

[ 发自小木虫客户端 ]
每天一点小精彩
8楼2014-07-07 20:12:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

绿遍山原

铜虫 (小有名气)

引用回帖:
7楼: Originally posted by zxx921212 at 2014-07-07 20:09:25
要是不用指针能做吗?
...

c的字符串就是指针,不用是不可能的。
你这样学C根本没实际意义,哪怕你能背下C语言标准,它也不会让你能写个排序或者解个方程。
要夢遊,不要催眠。
9楼2014-07-07 20:47:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zxx921212

铁杆木虫 (正式写手)

引用回帖:
9楼: Originally posted by 绿遍山原 at 2014-07-07 20:47:40
c的字符串就是指针,不用是不可能的。
你这样学C根本没实际意义,哪怕你能背下C语言标准,它也不会让你能写个排序或者解个方程。...

(⊙o⊙)…呃……看来是对这个真不通,

[ 发自小木虫客户端 ]
每天一点小精彩
10楼2014-07-07 21:32:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zxx921212 的主题更新
信息提示
请填处理意见