好几年没有使用C ++了,这可能是一个琐碎的问题:
class Slice {
private:
size_t n_ = 0;
const char* data_;
public:
Slice() = default;
Slice(const char* data, size_t n) : data_(data), n_(n) {}
Slice(const char* s): data_(s), n_(strlen(s)) {}
Slice(const std::string& s): data_(s.data()), n_(s.size()) {
// printf("%s %d\n", data_, n_);
}
~Slice() = default;
}
Slice Slice::sub(int start, int len) const {
assert(start + len < n_);
auto sub = std::string(this->data_ + start, len);
Slice s(sub);
printf("%s\n", sub.data());
return s;
}
我期望Slice::sub
返回一个有效的Slice,但事实证明外部调用者无法获得正确的值(似乎sub.data_
被释放了)。
我认为返回的sub
本地对象将被复制到外部变量,对吗?如何优化此代码?
答案 0 :(得分:0)
$ps.Runspace.AddArgument($remoteComputer)
或const char *
代替char *
。std::string
。std::move
用于同一函数中的函数名和变量名。