Std::String是C++标准库字符串类型,System::String是CLR中的类型,C#和CLR C++程序里都可以使用System::String。就像MFC中的CString,应用场景不同。
而c#和CLI C++是微软的库,基于Windows的。
System::String是托管类,资源在托管堆里,功能是CLR提供的。
std::string是本地类,资源在本地堆里,功能是C++ runtime提供的。
微软做C++/CLI就是为了衔接.Net和C++,于是两个地方的东西都能用。但两者是不能直接替换的,互相之间是需要转换的。