当前位置:  开发笔记 > IOS > 正文

std :: string :: assign vs std :: string :: operator =

如何解决《std::string::assignvsstd::string::operator=》经验,为你挑选了1个好方法。

我很久以前用Borland C++编写,现在我正在尝试理解"新"(对我而言)C + 11(我知道,我们在2015年,有一个c + 14 ...但我正在工作在C++ 11项目上)

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

#include 
#include 
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多个结构,我正在寻找最快的机制(我不关心内存,除非有很大的区别)



1> emlai..:

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

如果你真的想要快速,请使用assign并指定大小:

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

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


注意不要在std :: string中包含C字符串中的尾部\ 0,如果稍后尝试追加它,这将会咬你.在上面的示例中,使用长度为11而不是12.
推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有