将vector <char> buf(256)转换为LPCSTR?</char>

时间:2010-07-19 09:37:33

标签: c++ vector types

有没有办法转换上面的内容?

如果是这样,最好的方法是什么?

我猜你可以遍历向量并分配给const char*,但我不确定这是否是最好的方法。

4 个答案:

答案 0 :(得分:3)

std::string s(vec.begin(), vec.end());
// now use s.c_str()

我认为这应该是相当安全的。

答案 1 :(得分:1)

也许您可以使用std::string代替std::vector<char>

我相信std::stringstd::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