编组 - 将 std::vector<char> 转换为字符串^ 反之
Marshaling - conversion std::vector<char> to string^ And conversely
我使用 2 种方法进行这些转换
// 向量到字符串。
VectorToString(std::vector<char> data)
{
const char* newData = &data[0];
String ^result;
result = marshal_as<String^>(newData);
return result;
}
// 字符串转向量
StringToVector(String ^ data)
{
marshal_context ctx;
IntPtr p = Marshal::StringToHGlobalAnsi(data);
const char* pAnsi = static_cast<const char*>(p.ToPointer());
// use pAnsi
std::vector<char> result;
result.assign(pAnsi, pAnsi + strlen(pAnsi));
Marshal::FreeHGlobal(p);
return result;
}
上面2个函数我可以做转换。
你能告诉我这些转换是正确的吗?或不?
实际上,这种将 std::vector 转换为 String 的方法是最好的方法吗?
你必须添加#include msclr/marshal_cppstd.h
向量到字符串 ^
vector<char> data;// this is be initialize
std::string myString = std::string(begin(data), end(data));
String^ result = marshal_as<String^>(myString);
字符串 ^ 到向量
marshal_context context;
std::vector<char> myVector;
const char* afterConvert = context.marshal_as<const char*>(data);
myVector.assign(afterConvert , afterConvert + strlen(afterConvert));
我使用 2 种方法进行这些转换
// 向量到字符串。
VectorToString(std::vector<char> data)
{
const char* newData = &data[0];
String ^result;
result = marshal_as<String^>(newData);
return result;
}
// 字符串转向量
StringToVector(String ^ data)
{
marshal_context ctx;
IntPtr p = Marshal::StringToHGlobalAnsi(data);
const char* pAnsi = static_cast<const char*>(p.ToPointer());
// use pAnsi
std::vector<char> result;
result.assign(pAnsi, pAnsi + strlen(pAnsi));
Marshal::FreeHGlobal(p);
return result;
}
上面2个函数我可以做转换。 你能告诉我这些转换是正确的吗?或不? 实际上,这种将 std::vector 转换为 String 的方法是最好的方法吗?
你必须添加#include msclr/marshal_cppstd.h
向量到字符串 ^
vector<char> data;// this is be initialize
std::string myString = std::string(begin(data), end(data));
String^ result = marshal_as<String^>(myString);
字符串 ^ 到向量
marshal_context context;
std::vector<char> myVector;
const char* afterConvert = context.marshal_as<const char*>(data);
myVector.assign(afterConvert , afterConvert + strlen(afterConvert));