c++-cli - 给 StreamWriter 一个 std::string 来写入一个 txt 文件

标签 c++-cli streamwriter c++-standard-library

我想给一个字符串作为 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());

编辑

正如 Ben 在评论中指出的那样,您应该使用 marshal_as 而不是 PtrToStringAnsi:

示例来自here (逆运算可查here)

// 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;
}

关于c++-cli - 给 StreamWriter 一个 std::string 来写入一个 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18377343/

相关文章:

c# - C++/CLI Dll 与 C# 连接问题

c# - 将一些 C# 代码转换为托管或 C++/CLI 代码

interop - 如何将 C++/CLI 代码的某些部分编译为 native 代码,将某些部分编译为托管代码?

c++-cli - C++ 虚拟(密封)函数

c# - 如何将阿拉伯语、希伯来语写入CSV文件?

.net - StreamWriter的默认缓冲区大小是多少

c# 我可以使用 streamwriter 创建一个动态文件名吗?

c++ - C++ 标准的哪一部分要求 set::erase 立即调用析构函数

c++ - Mersenne Twister 跨编译器的可重复性

c++ - c++ 1y标准中是否会引入等效的双整数