C++ Coder

HCP高性能计算架构,实现,编译器指令优化,算法优化, LLVM CLANG OpenCL CUDA OpenACC C++AMP OpenMP MPI

C++博客 首页 新随笔 联系 聚合 管理
  98 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
http://www.cnblogs.com/linzheng/archive/2012/07/29/2614014.html

     在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 ( 13, replacement );
    
// The value of ws1 is L"ABBBAAAA".

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

    
return 0;
}


posted on 2012-10-29 21:51 jackdong 阅读(383) 评论(0)  编辑 收藏 引用 所属分类: Windows RT

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理