我有一个非常奇怪的行为,我无法理解.
该测试通过:
CipString str = *std::make_shared<CipString>("Bye!").get();
EXPECT_EQ(static_cast<std::string>(str), "Bye!");
Run Code Online (Sandbox Code Playgroud)
但这不是:
CipString *str = std::make_shared<CipString>("Bye!").get();
EXPECT_EQ(static_cast<std::string>(*str), "Bye!");
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
预期:static_cast(*str)
这是:"p\x15\x97\x1"
等于:"再见!"
CipString的代码:
class CipString{
public:
CipString(const std::string& str) {
length = str.size();
string.reset(new uint8_t[length]);
std::copy(str.begin(), str.end(), string.get());
}
operator std::string() const {
std::string str("", length);
std::copy(string.get(), string.get() + length, str.begin());
return str;
}
uint16_t length; /**< Length of the String (16 bit value) */
std::shared_ptr<uint8_t> string; /**< Pointer to the string data */
};
Run Code Online (Sandbox Code Playgroud)