我想给一个字符串作为 Visual c++ 中 Stream Writer writeline 方法的参数
StreamWriter^ sw = gcnew StreamWriter("Positive Sample.txt");
string Loc = "blabla";
sw->WriteLine(Loc);
它产生错误 - 没有重载函数的实例与参数列表匹配
我想给一个字符串作为 Visual c++ 中 Stream Writer writeline 方法的参数
StreamWriter^ sw = gcnew StreamWriter("Positive Sample.txt");
string Loc = "blabla";
sw->WriteLine(Loc);
它产生错误 - 没有重载函数的实例与参数列表匹配
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;
}