参见英文答案 >
initializing std::string from char* without copy6个
这是一个非常简单的问题,但我发现它很棘手.我想将char *视为std :: string,例如:
这是一个非常简单的问题,但我发现它很棘手.我想将char *视为std :: string,例如:
char *p = ...; // read a huge chuck from a file std::string s(p); // this is not what I want
所以,如果我使用构造函数,我得到一个p的副本,这是浪费内存和时间.有可能以某种方式避免这种情况,并将std :: string内容“分配”到预先存在的地址吗?
任何其他想法都非常受欢迎!
谢谢!
解决方法
Is it possible somehow to avoid this,and “assign” the
std::string
content to a pre-existing address?
没有.
但是,您可以将其分配给std::string_view
.继续,除了自己的内存之外,所有对std :: string的使用都应该被std :: string_view替换.