从char*
初始化std::string
而不复制的方法是使用std::string
的构造函数,该构造函数接受两个指针参数,分别表示字符串的起始位置和结束位置。这样可以避免字符串的复制,提高效率。
示例代码:
#include<iostream>
#include<string>
int main() {
char* cstr = new char[100];
strcpy(cstr, "Hello, world!");
std::string str(cstr, cstr + strlen(cstr));
std::cout<< str<< std::endl;
delete[] cstr;
return 0;
}
在这个示例中,我们首先创建了一个char*
指针,指向一个包含字符串的内存块。然后使用std::string
的构造函数,将char*
指针和char*
指针加上字符串长度作为结束位置,初始化std::string
对象。最后输出std::string
对象的内容。
需要注意的是,这种方法仍然会拷贝字符串,只是拷贝的是指针指向的内存块,而不是整个字符串。如果需要避免任何拷贝,可以考虑使用std::string_view
,它可以在不拷贝字符串的情况下引用一个字符串。
领取专属 10元无门槛券
手把手带您无忧上云