• Windows 8 C++/CX字符串


         在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;
    }
  • 相关阅读:
    149. Max Points on a Line(js)
    148. Sort List(js)
    147. Insertion Sort List(js)
    146. LRU Cache(js)
    145. Binary Tree Postorder Traversal(js)
    144. Binary Tree Preorder Traversal(js)
    143. Reorder List(js)
    142. Linked List Cycle II(js)
    141. Linked List Cycle(js)
    140. Word Break II(js)
  • 原文地址:https://www.cnblogs.com/linzheng/p/2614014.html
Copyright © 2020-2023  润新知