c++ - 如何 strcpy 并返回复制的字符数?

标签 c++ string strcpy strlen

我想将一个以 null 结尾的字符串复制到另一个位置,并想知道复制的字符串有多长。效率是最重要的。有 strcpy 函数可以实现这一点,但它不会返回实际复制了多少个字符。

当然,我可以通过简单地在之后调用 strlen 来检测复制的字符串的长度来发现这一点,但这将意味着再次遍历字符串中的字符,虽然 strcpy 必须跟踪它复制了多少个字符。出于性能原因,我不想进行这样的二次遍历。

我知道用一个简单的逐个字符的拷贝编写自己的 strcpy 很容易,但我认为标准库可能会应用魔法使 strcpy 更快而不是简单的逐字符实现。

那么,strcpy 并接收复制的字符数而无需再次遍历字符串的最佳方法是什么?

最佳答案

多系统支持stpcpy它返回指向目的地末尾的指针。您可以减去原始目标指针,这样您就可以获得长度。

关于c++ - 如何 strcpy 并返回复制的字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34402715/

相关文章:

string - C# 格式化 - 如何正确格式化名称? IE。名字或姓氏

java - 这些声明有什么区别?这与一个可变而另一个不可变有关吗?

C : how do I printf "the square root of 1764 is 42 and * in ascii"?

c++ - MATLAB + Mex + OpenCV : Links and compiles correctly but can't find library at run time

c++ - 指向具有私有(private)构造函数的类的类成员的指针

c++ - 将双变量 std::function 转换为单变量

java - 如何将 JsonString 转换为 String?

c - 故意易受攻击的测试程序未按预期运行

c - 使用 strcpy 的段错误

C++ rend() 指向与 rbegin() 相同的元素