gpt4 book ai didi

c++11 - std::string::assign 与 std::string::operator=

转载 作者:行者123 更新时间:2023-12-02 19:45:23 25 4
gpt4 key购买 nike

我很久以前就用 Borland C++ 编写过代码,现在我试图理解(对我来说)“新的”C+11(我知道,我们已经到了 2015 年了,有一个 c+14 ...但是我正在开发一个 C++11 项目)

现在我有几种方法可以为字符串赋值。

#include <iostream>
#include <string>
int main ()
{
std::string test1;
std::string test2;
test1 = "Hello World";
test2.assign("Hello again");

std::cout << test1 << std::endl << test2;
return 0;
}

它们都有效。我是从http://www.cplusplus.com/reference/string/string/assign/学到的还有其他方法可以使用 assign 。但对于简单的字符串赋值,哪一个更好呢?我必须用 8 个 std:string 填充 100 多个结构,并且我正在寻找最快的机制(我不关心内存,除非有很大的差异)

最佳答案

两者都同样快,但 = "..." 更清晰。

如果您确实想要快速,请使用分配并指定大小:

test2.assign("Hello again", sizeof("Hello again") - 1); // don't copy the null terminator!
// or
test2.assign("Hello again", 11);

这样,只需要一次分配。 (您也可以预先 .reserve() 足够的内存来获得相同的效果。)

关于c++11 - std::string::assign 与 std::string::operator=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34196053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com