Visual c++ 更改C+的文本+;CLI标签 我试图改变C++ CLI程序中的标签文本。我需要获取用户在文本框中输入的值,将其插入一个短字符串,然后将标签更改为该字符串。构造字符串没有问题,但将标签设置为新字符串时遇到问题。这是我的密码 std::string v1str = "Phase A: "; v1str.append(vt2); //vt2 is type str::string v1str.append(" Vac"); label->Text = v1str;

Visual c++ 更改C+的文本+;CLI标签 我试图改变C++ CLI程序中的标签文本。我需要获取用户在文本框中输入的值,将其插入一个短字符串,然后将标签更改为该字符串。构造字符串没有问题,但将标签设置为新字符串时遇到问题。这是我的密码 std::string v1str = "Phase A: "; v1str.append(vt2); //vt2 is type str::string v1str.append(" Vac"); label->Text = v1str;,visual-c++,c++-cli,label,Visual C++,C++ Cli,Label,这是我收到的错误消息 为什么不允许我通过v1str作为标签文本设置器?如何将我所构造的字符串传递给标签文本设置程序? C++ +CLI不是C++,在这里不能使用 STD::String < /C>。但可以在C++中使用C++,并转换 STD::String 和从系统::字符串< /代码> < /P> //In C++/CLI form: #include <vcclr.h> System::String^ clr_sting = "clr_sting"; //convert

这是我收到的错误消息


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

C++ +CLI不是C++,在这里不能使用<代码> STD::String < /C>。但可以在C++中使用C++,并转换<代码> STD::String 和从<代码>系统::字符串< /代码> < /P>
//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());
//以C++/CLI形式:
#包括
系统::字符串^clr\u sting=“clr\u sting”;
//将字符串从CLI转换为C++
pin_ptr cpp_string=PtrToStringChars(clr_sting);
//将字符串从C++转换为CLI
系统::字符串^str=gcnew系统::字符串(cpp_字符串);
//或
std::string std_string=“std_string”;
System::String ^str2=gcnewsystem::String(std_String.c_str());

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

您可以将
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;

谢谢,成功了。我实际上对上面的代码做了一个更改。vt2的类型为
str::string
,无法与
System::string^v1str
连接。幸运的是,vt2是从文本框中输入的原始文本(格式为
System::String^
)创建的,以确保它是正确的输入,因此我能够使用
textbox->text
代替上述代码中的
vt2
,以解决我的原始问题。谢谢。我最终使用@shf301 answer来解决我的问题,但这是我第一次使用CLI,这条评论帮助我消除了很多困惑。