我试图将foo实例的向量转换为字符串,但我在std :: transform上有致命错误。致命错误在std :: transform C++
说data
具有以下值:
[0]
[name] = John
[size] = 3423
[1]
[name] = Joseph
[size] = 3413
代码:
struct foo {
foo(std::string n, size_t s)
: name(std::move(n)),
size(s)
{
}
std::string name;
size_t size;
};
std::string server = "1";
std::vector<std::string> output;
output.reserve(static_cast<unsigned_long>(std::distance(std::begin(data), std::end(data))));
std::transform(std::begin(data),
std::end(data),
std::begin(output),
[&, this](foo const& item){
std::ostringstream result;
data << server << ","
<< item.name << ","
<< item.size << ";";
return result.str();
});
在调试停止在该行的tranform
实施 *__result = __unary_op(*_first)
然后去追赶测试框架的FatalConditionHandler。我对catch测试和std :: transform都很陌生。有人可以解释什么可能导致问题以及如何解决问题?非常感谢!
应该是'result << server << ...'? – BoBTFish
'std :: vector :: reserve'不会做你认为它的功能。 “调整大小”更准确,但即使如此,您可能也想避免这种情况。 – AndyG