Windows 8 C++/CX字符串

简介:

在C++/CX里面是使用Platform::String类来表示字符串的类型,在windows运行时的接口和方法中,需要使用Platform::String来作为字符串参数的传递。如果需要使用标准C++的字符串类型如wstring或者string的时候,可以将Platform::String与标准的C++的字符串进行互相的转换。

 

String类型的构造

String类型表示的是char16的字符串,可以直接通过字符串的赋值来进行构造也可以使用标准C++的wchar_t*指针进行构造。

 

 
  1. // Initializing a String^ by using string literals  
  2.     String^ str1 = "Test"; // ok for ANSI text. uses current code page  
  3.     String^ str2("Test");  
  4.     String^ str3 = L"Test";  
  5.     String^ str4(L"Test");  
  6.  
  7.  
  8.     //Initialize a String^ by using another String^  
  9.  
  10.     String^ str6(str1);  
  11.     auto str7 = str2;  
  12.  
  13.     // Initialize a String from wchar_t* and wstring  
  14.     wchar_t msg[] = L"Test";  
  15.     String^ str8 = ref new String(msg);  
  16.     std::wstring wstr1(L"Test");  
  17.     String^ str9 = ref new String(wstr1.c_str());  
  18.     String^ str10 = ref new String(wstr1.c_str(), wstr1.length()); 

字符的操作

String提供了相关的方法来操作字符串,其中可以使用String::Data()方法来返回一个String^ 对象的wchar_t*指针。

 

 
  1. // Concatenation   
  2.     auto str1 = "Hello" + " World";  
  3.     auto str2 = str1 + " from C++/CX!";      
  4.     auto str3 = String::Concat(str2, " and the String class");  
  5.       
  6.     // Comparison  
  7.     if (str1 == str2) { /* ... */ }  
  8.     if (str1->Equals(str2)) { /* ... */ }  
  9.     if (str1 != str2) { /* ... */ }  
  10.     if (str1 < str2 || str1 > str2) { /* ... */};  
  11.     int result = String::CompareOrdinal(str1, str2);  
  12.       
  13.     if(str1 == nullptr) { /* ...*/};  
  14.     if(str1->IsEmpty()) { /* ...*/};  
  15.  
  16.    // Accessing individual characters in a String^  
  17.     auto it = str1->Begin();  
  18.     char16 ch = it[0]; 

String类型的转换

String类型可以和标准C++的wstring进行互相的转换

 

 
  1. // compile with: /ZW  
  2. #include <string> 
  3.  
  4. using namespace std;  
  5. using namespace Platform;  
  6.  
  7. int main( array<String^>^ args )   
  8. {  
  9.     // Create a String^ variable statically or dynamically from a   
  10.  
  11. literal string.   
  12.     String^ str1 = "AAAAAAAA";  
  13.       
  14.     // Use the value of str1 to create the ws1 wstring variable.  
  15.     wstring ws1( str1->Data() );   
  16.     // The value of ws1 is L"AAAAAAAA".  
  17.  
  18.     // Manipulate the wstring value.  
  19.     wstring replacement( L"BBB" );  
  20.     ws1ws1 = ws1.replace ( 1, 3, replacement );  
  21.     // The value of ws1 is L"ABBBAAAA".  
  22.  
  23.     // Assign the modified wstring back to str1.   
  24.     str1 = ref new String( ws1.c_str() );   
  25.  
  26.     return 0;  

 

本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1078189


相关文章
|
3天前
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
32 16
|
5月前
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
115 4
|
4月前
|
缓存 网络协议 API
C/C++ StringToAddress(字符串转 boost::asio::ip::address)
通过上述步骤和示例代码,你可以轻松地在C++项目中实现从字符串到 `boost::asio::ip::address`的转换,从而充分利用Boost.Asio库进行网络编程。
137 0
|
4月前
|
编译器 C语言 C++
C/C++数字与字符串互相转换
C/C++数字与字符串互相转换
|
5月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
5月前
|
存储 C++
C++(五)String 字符串类
本文档详细介绍了C++中的`string`类,包括定义、初始化、字符串比较及数值与字符串之间的转换方法。`string`类简化了字符串处理,提供了丰富的功能如字符串查找、比较、拼接和替换等。文档通过示例代码展示了如何使用这些功能,并介绍了如何将数值转换为字符串以及反之亦然的方法。此外,还展示了如何使用`string`数组存储和遍历多个字符串。
|
6月前
|
安全 C++ Windows
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
|
7月前
|
算法 C++
2730. 找到最长的半重复子字符串(c++,滑动窗口)
2730. 找到最长的半重复子字符串(c++,滑动窗口)
|
7月前
|
C++
567. 字符串的排列(c++)滑动窗口
567. 字符串的排列(c++)滑动窗口
|
7月前
|
编译器 C++
【C++】string类的使用④(字符串操作String operations )
这篇博客探讨了C++ STL中`std::string`的几个关键操作,如`c_str()`和`data()`,它们分别返回指向字符串的const char*指针,前者保证以&#39;\0&#39;结尾,后者不保证。`get_allocator()`返回内存分配器,通常不直接使用。`copy()`函数用于将字符串部分复制到字符数组,不添加&#39;\0&#39;。`find()`和`rfind()`用于向前和向后搜索子串或字符。`npos`是string类中的一个常量,表示找不到匹配项时的返回值。博客通过实例展示了这些函数的用法。