http://www.cnblogs.com/linzheng/archive/2012/07/29/2614014.html
在C++/CX里面是使用Platform::String類來表示字符串的類型,在windows運行時的接口和方法中,需要使用Platform::String來作為字符串參數的傳遞。如果需要使用標準C++的字符串類型如wstring或者string的時候,可以將Platform::String與標準的C++的字符串進行互相的轉換。
// Initializing a String^ by using string literals
String^ str1 = "Test"; // ok for ANSI text. uses current code page
String^ str2("Test");
String^ str3 = L"Test";
String^ str4(L"Test");


//Initialize a String^ by using another String^

String^ str6(str1);
auto str7 = str2;

// Initialize a String from wchar_t* and wstring
wchar_t msg[] = L"Test";
String^ str8 = ref new String(msg);
std::wstring wstr1(L"Test");
String^ str9 = ref new String(wstr1.c_str());
String^ str10 = ref new String(wstr1.c_str(), wstr1.length());
// Concatenation
auto str1 = "Hello" + " World";
auto str2 = str1 + " from C++/CX!";
auto str3 = String::Concat(str2, " and the String class");
// Comparison
if (str1 == str2) { /*
*/ }
if (str1->Equals(str2)) { /*
*/ }
if (str1 != str2) { /*
*/ }
if (str1 < str2 || str1 > str2) { /*
*/};
int result = String::CompareOrdinal(str1, str2);
if(str1 == nullptr) { /*
*/};
if(str1->IsEmpty()) { /*
*/};

// Accessing individual characters in a String^
auto it = str1->Begin();
char16 ch = it[0];
// compile with: /ZW
#include <string>

using namespace std;
using namespace Platform;

int main( array<String^>^ args )
{
// Create a String^ variable statically or dynamically from a

literal string.
String^ str1 = "AAAAAAAA";
// Use the value of str1 to create the ws1 wstring variable.
wstring ws1( str1->Data() );
// The value of ws1 is L"AAAAAAAA".

// Manipulate the wstring value.
wstring replacement( L"BBB" );
ws1 = ws1.replace ( 1, 3, replacement );
// The value of ws1 is L"ABBBAAAA".

// Assign the modified wstring back to str1.
str1 = ref new String( ws1.c_str() );

return 0;
}
在C++/CX里面是使用Platform::String類來表示字符串的類型,在windows運行時的接口和方法中,需要使用Platform::String來作為字符串參數的傳遞。如果需要使用標準C++的字符串類型如wstring或者string的時候,可以將Platform::String與標準的C++的字符串進行互相的轉換。
String類型的構造
String類型表示的是char16的字符串,可以直接通過字符串的賦值來進行構造也可以使用標準C++的wchar_t*指針進行構造。
// Initializing a String^ by using string literals
String^ str1 = "Test"; // ok for ANSI text. uses current code page
String^ str2("Test");
String^ str3 = L"Test";
String^ str4(L"Test");

//Initialize a String^ by using another String^
String^ str6(str1);
auto str7 = str2;
// Initialize a String from wchar_t* and wstring
wchar_t msg[] = L"Test";
String^ str8 = ref new String(msg);
std::wstring wstr1(L"Test");
String^ str9 = ref new String(wstr1.c_str());
String^ str10 = ref new String(wstr1.c_str(), wstr1.length());
字符的操作
String提供了相關的方法來操作字符串,其中可以使用String::Data()方法來返回一個String^ 對象的wchar_t*指針。
// Concatenation
auto str1 = "Hello" + " World";
auto str2 = str1 + " from C++/CX!";
auto str3 = String::Concat(str2, " and the String class");
// Comparison
if (str1 == str2) { /*
*/ }
if (str1->Equals(str2)) { /*
*/ }
if (str1 != str2) { /*
*/ }
if (str1 < str2 || str1 > str2) { /*
*/};
int result = String::CompareOrdinal(str1, str2);
if(str1 == nullptr) { /*
*/};
if(str1->IsEmpty()) { /*
*/};
// Accessing individual characters in a String^
auto it = str1->Begin();
char16 ch = it[0];
String類型的轉換
String類型可以和標準C++的wstring進行互相的轉換
// compile with: /ZW
#include <string>
using namespace std;
using namespace Platform;
int main( array<String^>^ args )
{
// Create a String^ variable statically or dynamically from a 
literal string.
String^ str1 = "AAAAAAAA";
// Use the value of str1 to create the ws1 wstring variable.
wstring ws1( str1->Data() );
// The value of ws1 is L"AAAAAAAA".
// Manipulate the wstring value.
wstring replacement( L"BBB" );
ws1 = ws1.replace ( 1, 3, replacement );
// The value of ws1 is L"ABBBAAAA".
// Assign the modified wstring back to str1.
str1 = ref new String( ws1.c_str() ); 
return 0;
}


