gex*_*ide 7 c++ string strlen strcpy
我想将一个以null结尾的字符串复制到另一个位置,并想知道复制的字符串有多长.效率至关重要.有一个strcpy
功能可以实现这一点,但它不会返回实际复制的字符数.
当然,我可以通过简单地调用strlen
后来检测复制字符串的长度来找到它,但这意味着第二次再次遍历字符串中的字符,尽管strcpy
必须跟踪它复制的字符数.出于性能原因,我不想进行这样的第二次遍历.
我知道strcpy
使用简单的char-by-char副本编写自己很容易,但我认为标准库可能会应用魔法,这strcpy
比使用简单的char-by-char实现更快.
那么,在strcpy
没有再次遍历字符串的情况下,获取复制字符数的最佳方法是什么?
如果您确实需要这个,那么编写自己的代码将非常容易:
unsigned int lenstrcpy(char dest[], const char source[]) {
unsigned int i = 0;
while ((dest[i] = source[i]) != '\0') {
i++;
}
return i;
}
Run Code Online (Sandbox Code Playgroud)