假设我有一个const string&
作为输入的函数,例如:
void foo(const string& s);
然后我有一个内部缓冲区const char* buffer;
,我知道它的大小。
我想如果我创建内联字符串,仍然会发生一个副本:
foo(string(buffer, n));
但是没有必要复制缓冲区,因为所有东西都是不变的,我只需要字符串类的功能而不是它创建的缓冲区。
我必须提到,我不确定是否发生了复制,但是查看字符串的构造函数,他们都说会发生复制。我不知道编译器优化能否理解这种情况,我也找不到方法来确定是否发生了复制。
有什么方法可以为字符串使用外部缓冲区,或者至少有一种方法可以确保复制发生与否。我目前正在使用 std 字符串和 c++11。