有没有办法转换上面的内容?
如果是这样,最好的方法是什么?
我猜你可以遍历向量并分配给const char*
,但我不确定这是否是最好的方法。
答案 0 :(得分:3)
std::string s(vec.begin(), vec.end());
// now use s.c_str()
我认为这应该是相当安全的。
答案 1 :(得分:1)
也许您可以使用std::string
代替std::vector<char>
?
我相信std::string
与std::vector<char>
类似,因此您可以以相同的方式使用它,并从其附加功能中受益。
如果是这样,std::string
有一个方法.c_str()
,它返回一个以空字符结尾的C字符串(const char*
)。
答案 2 :(得分:0)
您可以这样做:
std::string str(&myVec[0], myVec.size());
然后str.c_str()
会给你一个const char *
来玩。但这是假设向量中的数据以空值终止。如果不是,那就没有保证。
答案 3 :(得分:0)
尝试简单的
LPCSTR str = &vec[0];
向量已包含C字符串所需的连续存储。但请注意,vec
已经以空值终止,并且在vec
仍在使用时无法销毁str
。通常vec
可以在不再使用时立即销毁,因此将指针存储到vec
是危险的,并且会导致崩溃。 OTOH,将指针作为参数传递可能没问题:
f(&vec[0]); // f takes a LPCSTR parameter