什么会更快?这个:
sprintf(&str[strlen(str)], "Something");
Run Code Online (Sandbox Code Playgroud)
要么
strcat(str, "Something");
Run Code Online (Sandbox Code Playgroud)
有任何性能差异吗?
Jus*_*udd 23
strcat会更快,因为sprintf必须首先扫描字符串寻找格式变量.
但真正的胜利是每个人都知道strcat正在做什么 - 连接字符串.使用sprintf的级联不是一个标准的使用.它会让人们做双重拍摄.
Jam*_*lis 10
鉴于两者之间的选择,我会选择strcat; 它肯定更具可读性,使你的意图清晰.它可能也会略快sprintf,但可能不会太多.
但是,无论您选择哪种方法,都应该使用snprintf或strncpy用于缓冲区溢出保护.
你把这个问题标记为c和c++; 如果您使用的是C++,那么使用C++会好得多std::string.
如果存在差异,则该差异根据编译器标志,代码运行时的计算机使用情况,库实现,...,......而有所不同.
针对您的具体情况,进行衡量.
将两个片段运行几十亿次并计时.
我非常怀疑你会发现任何重大的不同.
我strcat()更喜欢它:它清楚地传达了代码的含义.