更改C ++ CLI标签的文本

时间:2015-06-20 04:26:40

标签: visual-c++ c++-cli label

我正在尝试在C ++ CLI程序中更改标签的文本。我需要获取用户在文本框中输入的值,将其插入到短字符串中,然后将标签更改为该字符串。我没有问题构造字符串,但我将标签设置为新字符串。这是我的代码......

std::string v1str = "Phase A: ";
v1str.append(vt2); //vt2 is type str::string
v1str.append(" Vac");
label->Text = v1str;

这是我收到的错误消息......

enter image description here

为什么我不允许将v1str作为标签文本设置者传递?如何将我构造的字符串传递给标签文本设置器?

2 个答案:

答案 0 :(得分:1)

Label::Text的类型为System::String^,是一个托管的.Net字符串对象。您无法直接将std:string分配给System::String^,因为它们是不同的类型。

您可以convert std::stringSystem::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());