【发布时间】:2012-01-27 01:16:19
【问题描述】:
我最近开始学习 .net 和 Windows API,目前正在编写一个讨论串行端口的课程。
为了向串口写入一行,我使用了WriteLine 函数,它带有一个参数System::String^。我想知道是否可以从std::string 初始化System::String^。
我注意到我可以执行以下操作:
serialPort->WriteLine("stuff");
但我做不到:
std::string data = "stuff";
serialPort->WriteLine(data.c_str());
另外,我做不到:
char data[] = "stuff";
serialPort->WriteLine(data);
也没有
char* data = "stuff";
serialPort->WriteLine(data);
谁能告诉我这里发生了什么?当我传入时,VS 是否以某种方式将文字转换为它自己的东西?
最后,我不确定我是否为此选择了正确的标签,因为我真的不知道它属于什么。
【问题讨论】:
-
您正在尝试将 .NET 的内容与 C 和 C++ 的内容混合在一起,结果并不总是那么好。 .NET
String类型 not 与std::string或char数组相同,它们不可相互转换。您应该使用您正在调用的函数所期望的任何类型。 -
可以
const char data[] = "stuff"; WriteLine(data)吗? -
您是否尝试过使用 gcnew 使用 data.c_str() 构建 System::String^? This answer 可能会起作用(根据需要将 const char* 替换为 std::string 和 c_str() )。
-
不,这也不起作用。
标签: c++ .net string c++-cli console.writeline