String的C ++含义^

时间:2015-02-02 21:53:50

标签: .net string visual-c++ printing c++-cli

我正在尝试为Label(Windows窗体)制作一个getter。

myForm.h

public: String^ getLabel1() { return label1->Text; };

但是当我尝试打印它时,它将无法编译!

myForm.cpp

void Main(array<String^>^args)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);

    Test::MyForm form;
    Application::Run(%form);

    form.setLabel1();
    std::cout << form.getLabel1() << std::endl;
}

我想我返回了错误的类型(String ^),但我在'^'字符上找不到任何内容,当我尝试返回std::string时,我无法编译它! 有人能帮助我吗?

1 个答案:

答案 0 :(得分:9)

String^是“引用GC对象” - 存在于托管堆中的对象(即“.NET对象”)。与String*(指向System::String CLR对象或std::string(C ++标准库字符串本地)的指针相比。

C ++ STL cout流不支持输出System::String,您必须首先将其封送到兼容类型,或者改为使用Console::WriteLine

要重新迭代sp2danny在评论中所说的内容,这是而不是 C ++,这是C ++ / CLI,它可以被认为是C ++-cque语法,用于替代C#的CIL + CLR能够以源代码形式使用现有C ++代码的好处,包括STL。