C ++从中复制文本。从char * var到char * var2的文本

时间:2015-10-25 12:23:23

标签: c++ pointers

我刚刚开始学习c ++,而且我在处理地址和将变量从一个地址重写到另一个地址时遇到了问题。 我有一个纠正的程序:

public function vacationsbalance($typeId) {
    // Get vacataions balance for existing employee.
    $vacationsBalance = $this->vacations()->where('vacation_type_id', '=', $typeId)->sum('days_num');
    return $vacationsBalance;
}

问题: 我必须编写一个函数来重写从str1到str2的文本。我还必须使用指定的内存量来将文本存储在str2中。

但我第一步陷入困境: 我想先从str1的地址开始(它的地址是str1 [0]我是对的吗?)然后我想在每个地址添加+1之后循环来遍历str1的所有元素并写下来到新的char * var并返回它。

1 个答案:

答案 0 :(得分:1)

据我所知,您将编写一个函数,将存储在一个字符数组中的字符串复制到另一个字符数组中。

Usuaaly这样的字符串函数也返回指向目标数组的第一个字符的指针。

所以而不是

void cp(char* str2, char* str1);

最好声明像

这样的函数
char * cp( char *str2, const char *str1 );

这是一个低级函数,不应该检查目标数组中是否有足够的空间。这是来电者的问题。

所以函数可以定义为

char * cp( char *str2, const char *str1 )
{
    char *p = str2;

    while ( *str2++ = *str1++ );

    return p;
}

考虑到第二个参数的类型为const char *。在这种情况下,您可以使用常量数组作为此参数的参数,包括字符串文字。

使用程序中的变量声明,可以按以下方式调用函数

std::cout << cp( str2, str1 ) << std::endl;