封送 - 将std :: vector <char>转换为字符串^和相反

时间:2017-08-13 04:35:38

标签: c++ c++-cli marshalling

我使用2种方法进行这些转换

// Vector to String。

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是最好的方法吗?

1 个答案:

答案 0 :(得分:2)

你必须添加#include msclr / marshal_cppstd.h

vector to String ^

vector<char> data;// this is be initialize
std::string myString = std::string(begin(data), end(data));
String^ result = marshal_as<String^>(myString);

string ^ to vector

marshal_context context;
std::vector<char> myVector;
const char* afterConvert = context.marshal_as<const char*>(data);
myVector.assign(afterConvert , afterConvert + strlen(afterConvert));