2

我想给一个字符串作为 Visual c++ 中 Stream Writer writeline 方法的参数

StreamWriter^ sw = gcnew StreamWriter("Positive Sample.txt");

string Loc = "blabla";

sw->WriteLine(Loc);

它产生错误 - 没有重载函数的实例与参数列表匹配

4

1 回答 1

3

WriteLine方法接受 CLI 的字符串,而不是 std 的字符串。

StreamWriter^ sw = gcnew StreamWriter("Positive Sample.txt");

String^ Loc = "blabla";

sw->WriteLine(Loc);

您可以使用System::Runtime::InteropServices::Marshal::PtrToStringAnsi从 C 字符串编组到String,或者您可以将 C 字符串传递给 String 的构造函数:

string Loc = "blabla";
String^ strLoc = gcnew String(Loc.c_str());

编辑

正如本在评论中指出的那样,您应该marshal_as改用PtrToStringAnsi

此处的示例(可以在此处找到逆运算)

// marshal_as_test.cpp
// compile with: /clr
#include <stdlib.h>
#include <string.h>
#include <msclr\marshal.h>

using namespace System;
using namespace msclr::interop;

int main() {
   const char* message = "Test String to Marshal";
   String^ result;
   result = marshal_as<String^>( message );
   return 0;
}
于 2013-08-22T10:07:40.960 回答