我正在尝试在C ++ CLI程序中更改标签的文本。我需要获取用户在文本框中输入的值,将其插入到短字符串中,然后将标签更改为该字符串。我没有问题构造字符串,但我将标签设置为新字符串。这是我的代码......
std::string v1str = "Phase A: ";
v1str.append(vt2); //vt2 is type str::string
v1str.append(" Vac");
label->Text = v1str;
这是我收到的错误消息......
为什么我不允许将v1str
作为标签文本设置者传递?如何将我构造的字符串传递给标签文本设置器?
答案 0 :(得分:1)
Label::Text
的类型为System::String^
,是一个托管的.Net字符串对象。您无法直接将std:string
分配给System::String^
,因为它们是不同的类型。
您可以convert std::string
到System::String
。但是,您很可能只想直接使用System::String
类型:
System::String^ v1str = "Phase A: ";
v1st += vt2; // or maybe gcnew System::String(vt2.c_str());
v1str += " Vac";
label->Text = v1str;
答案 1 :(得分:0)
C ++ / CLI不是C ++,你不能在那里使用std::string
。但您可以在C ++ / CLI中使用C ++,并将std::string
转换为System::String
//In C++/CLI form:
#include <vcclr.h>
System::String^ clr_sting = "clr_sting";
//convert strings from CLI to C++
pin_ptr<const wchar_t> cpp_string = PtrToStringChars(clr_sting);
//convert strings from C++ to CLI
System::String^ str = gcnew System::String(cpp_string);
//or
std::string std_string = "std_string";
System::String^ str2 = gcnew System::String(std_string.c_str());