System::String 类

String class

String class used across the library. Is a substitute for C# System.String when translating code. For optimization reasons, isn’t considered an Object subclass. This type should be allocated on stack and passed to functions by value or by reference. Never use System::SmartPtr class to manage objects of this type.

class String

方法

方法描述
ASPOSECPP_VALUE_TYPE_IMPLEMENTS_INTERFACES()String 是 C++ 端的值类型,隐式(无继承)实现了一些接口。
begin() const返回指向实际字符串缓冲区起始位置的指针。永不重新分配任何内容。不能保证缓冲区以空字符结尾。
Clone() const创建当前字符串的副本。
static Compare(const String&, int, const String&, int, int, bool)Less-equal-greater-compares 两个子字符串。
static Compare(const String&, int, const String&, int, int, bool, const SharedPtr<System::Globalization::CultureInfo>&)Less-equal-greater-compares 两个子字符串。
static Compare(const String&, const String&, System::StringComparison)Less-equal-greater-compares 两个字符串。
static Compare(const String&, int, const String&, int, int, System::StringComparison)Less-equal-greater-compares 两个字符串。
static Compare(const String&, const String&, bool)Less-equal-greater-compares 两个字符串。
static Compare(const String&, const String&, bool, const SharedPtr<System::Globalization::CultureInfo>&)Less-equal-greater-compares 两个字符串。
static CompareOrdinal(const String&, const String&)Less-equal-greater-compares 两个字符串,使用序数模式。
static CompareOrdinal(const String&, int, const String&, int, int)Less-equal-greater-compares 两个字符串,使用序数模式。
CompareTo(const String&) const以 ’less-equals-more’ 风格比较两个字符串。使用当前区域性。
static Concat(const ArrayPtr<String>&)连接字符串。
static Concat(const String&, const String&)连接字符串。
static Concat(const String&, const String&, const String&)连接字符串。
static Concat(const String&, const String&, const String&, const String&)连接字符串。
Contains(const String&) const检查 str 是否是当前字符串的子串。
Contains(char16_t) const检查字符串是否包含给定字符。
static Copy(const String&)创建字符串副本。
CopyTo(int, const ArrayPtr<char_t>&, int, int) const将字符串字符复制到现有数组元素中。不进行大小调整。
end() const返回指向实际字符串缓冲区末尾的指针。永不重新分配任何内容。不保证缓冲区为 null 终止。
EndsWith(const String&) const检查字符串是否以指定子串结尾。
EndsWith(const String&, System::StringComparison) const检查字符串是否以指定子串结尾。
EndsWith(const String&, bool, const SharedPtr<System::Globalization::CultureInfo>&) const检查字符串是否以指定子串结尾。
Equals(const String&, System::StringComparison) constString 相等比较。由 StringComparison 枚举提供的多种模式受支持。
Equals(const String&) constString 相等比较。使用 System::StringComparison::Ordinal 比较模式。
static Equals(const String&, const String&)Equal-compares 两个字符串,使用 Ordial 比较模式。
static Equals(const String&, const String&, System::StringComparison)Equal-compares 两个字符串。
FastToAscii(char, int) const尝试将 String 转换为 ASCII 字符串。
static Format(const SharedPtr<IFormatProvider>&, const String&, const Args&…)以 C# 风格格式化字符串。
static Format(std::nullptr_t, const String&, const Args&…)以 C# 风格格式化字符串。
static Format(std::nullptr_t, const char16_t(&), const Args&…)以 C# 风格格式化字符串。
static Format(const String&, const Args&…)以 C# 风格格式化字符串。
static Format(const String&, const System::ArrayPtr<T>&)以 C# 风格格式化字符串。
static FromAscii(const char *)从 ASCII 字符串创建 String
static FromAscii(const char *, int)从 ASCII 字符串创建 String
static FromAscii(const std::string&)从 ASCII 字符串创建 String
static FromUtf16(const std::u16string&)从 utf16 字符串创建 String
static FromUtf32(const uint32_t *, int32_t)从 utf32 字符串创建 String
static FromUtf8(const char *)从 utf8 字符串创建 String
static FromUtf8(const char *, int)从 utf8 字符串创建 String
static FromUtf8(const uint8_t *)从 utf8 字符串创建 String
static FromUtf8(const std::string&)从 utf8 字符串创建 String
static FromWCS(const std::wstring&)从 widestring 创建 String
get_Length() const获取字符串长度。
GetHashCode() const对包含的字符串进行哈希。实现于 ICU,哈希值与 C# 中的不匹配。
IndexOf(const String&, System::StringComparison) const子串前向查找。
IndexOf(char_t, int) const字符向前查找。
IndexOf(char_t, int, int) const子串中的字符向前查找。
IndexOf(const String&, int) const子串前向查找。
IndexOf(const String&, int, System::StringComparison) const子串前向查找。
IndexOf(const String&, int, int, System::StringComparison) const子串前向查找。
IndexOf(const String&, int, int) const子串前向查找。
IndexOfAny(char_t, int) const字符向前查找。
IndexOfAny(const String&, int) const因此在此字符串中查找 str 的所有字符。如果找到第一个字符,则返回其位置,否则继续查找第二个字符,以此类推。
IndexOfAny(const ArrayPtr<char_t>&) const在整个字符串中查找传入的任意字符。将字符串的第一个字符与 anyOf 中的所有字符比较,然后比较第二个字符,依此类推。返回第一个匹配任意目标字符的索引。
IndexOfAny(const ArrayPtr<char_t>&, int32_t) const在子串中查找传入的任意字符。将字符串的第一个字符与 anyOf 中的所有字符比较,然后比较第二个字符,依此类推。返回第一个匹配任意目标字符的索引。
IndexOfAny(const ArrayPtr<char_t>&, int32_t, int32_t) const在子串中查找传入的任意字符。将字符串的第一个字符与 anyOf 中的所有字符比较,然后比较第二个字符,依此类推。返回第一个匹配任意目标字符的索引。
Insert(int, const String&) const在指定位置插入子串。
Is(const System::TypeInfo&) const检查字符串对象是否为传入的由 TypeInfo 指定的类型。
IsAsciiString() const指示一个 String 是否仅包含 ASCII 符号。
IsEmpty() const检查字符串是否为非 null 且为空。
IsNormalized(System::Text::NormalizationForm) const检查 Unicode 字符串是否已使用指定的规范化形式进行规范化。
IsNull() const检查字符串是否被视为 null。只有在通过 String() 构造函数创建、移动、复制或从 null 字符串赋值,或调用了 reset() 方法时,String 才被认为是 null。
IsNullOrEmpty() const检查字符串是否为空或被视为 null。
static IsNullOrEmpty(const String&)检查传入的字符串是否为 null 或为空。
static IsNullOrWhiteSpace(const String&)指示指定的字符串是 null、为空,还是仅由空白字符组成。
static Join(const String&, const ArrayPtr<String>&, int, int)使用字符串作为分隔符连接数组。
static Join(const String&, const System::Details::ArrayView<String>&, int, int)使用字符串作为分隔符连接数组。
static Join(const String&, const SharedPtr<System::Collections::Generic::IEnumerable<String>>&)使用字符串作为分隔符连接数组。
static Join(const String&, const ArrayPtr<SharedPtr<Object>>&)使用字符串作为分隔符连接数组。
LastIndexOf(const String&, int) const子串向后查找。
LastIndexOf(const String&, System::StringComparison) const子串向后查找。
LastIndexOf(const String&, int, System::StringComparison) const子串向后查找。
LastIndexOf(const String&, int, int, StringComparison) const子串向后查找。
LastIndexOf(char_t) const字符向后查找。
LastIndexOf(char_t, int32_t) const字符向后查找。
LastIndexOf(char_t, int32_t, int32_t) const字符向后查找。
LastIndexOfAny(const ArrayPtr<char_t>&) const在整个字符串中向后查找传入的任意字符。将字符串的最后一个字符与 anyOf 中的所有字符比较,然后比较前一个字符,依此类推。返回找到的第一个匹配的索引。
LastIndexOfAny(const ArrayPtr<char_t>&, int32_t) const在子串中向后查找传入的任意字符。将字符串的最后一个字符与 anyOf 中的所有字符比较,然后比较前一个字符,依此类推。返回找到的第一个匹配的索引。
LastIndexOfAny(const ArrayPtr<char_t>&, int32_t, int32_t) const在子串中向后查找传入的任意字符。将字符串的最后一个字符与 anyOf 中的所有字符比较,然后比较前一个字符,依此类推。返回找到的第一个匹配的索引。
Normalize(System::Text::NormalizationForm) const使用指定的规范化形式对 Unicode 字符串进行规范化。
operator!=(const String&) const非相等比较运算符。
operator!=(std::nullptr_t) const检查字符串是否不为 null。采用与 IsNull() 调用相同的逻辑。
operator+(const String&) constString 连接运算符。
operator+(const T&) constString 与字符串字面量或字符字符串指针的连接。
operator+(char_t) const在字符串末尾添加字符。
operator+(int) const在字符串末尾添加整数值的字符串表示。
operator+(uint32_t) const在字符串末尾添加无符号整数值的字符串表示。
operator+(double) const在字符串末尾添加浮点值的字符串表示。
operator+(int64_t) const在字符串末尾添加整数值的字符串表示。
operator+(const T&) const在字符串末尾添加引用类型对象的字符串表示。
operator+(const T&) const在字符串末尾添加引用类型对象的字符串表示。
operator+(T) const在字符串末尾添加布尔值的字符串表示。
operator+=(char_t)连接赋值运算符。
operator+=(const String&)连接赋值运算符。
operator+=(double)连接赋值运算符。
operator+=(uint8_t)连接赋值运算符。
operator+=(int16_t)连接赋值运算符。
operator+=(uint16_t)连接赋值运算符。
operator+=(int32_t)连接赋值运算符。
operator+=(uint32_t)连接赋值运算符。
operator+=(int64_t)连接赋值运算符。
operator+=(uint64_t)连接赋值运算符。
operator+=(T)连接赋值运算符。
operator<(const String&) const对字符串进行顺序比较。
operator=(const String&)赋值运算符。
operator=(String&&)移动赋值运算符。
operator==(const String&) const相等比较运算符。
operator==(std::nullptr_t) const检查字符串是否为 null。使用与 IsNull() 调用相同的逻辑。
operator>(const String&) const对字符串进行顺序比较。
operator[](int) const获取指定位置的字符。
PadLeft(int, char_t) const在原始字符串左侧添加填充。
PadRight(int, char_t) const在原始字符串右侧添加填充。
rbegin() const返回指向实际字符串缓冲区最后一个字符(如果有)的逆向迭代器。
Remove(int32_t, int32_t) const从当前字符串中提取除子串之外的所有内容。
rend() const返回指向实际字符串缓冲区第一个字符之前的逆向迭代器(如果有)。
Replace(char_t, char_t) const替换字符串中所有出现的字符。
Replace(const String&, const String&) const替换此字符串中所有出现的查找项。
reset()将字符串设为 null。相当于 C# 中的 'string_variable_name = null'
SetCharAt(int, char_t)在指定位置设置字符。
Split(char_t, StringSplitOptions) const按字符拆分字符串。
Split(char_t, int32_t, StringSplitOptions) const按字符拆分字符串。
Split(char_t, char_t, StringSplitOptions) const按两个字符中的任意一个拆分字符串。
Split(const ArrayPtr<char_t>&, StringSplitOptions) const按指定的任意字符拆分字符串。
Split(const ArrayPtr<char_t>&, int32_t, StringSplitOptions) const按指定的任意字符拆分字符串。
Split(const String&, StringSplitOptions) const按子串拆分字符串。
Split(const String&, int, StringSplitOptions) const按子串拆分字符串。
Split(const ArrayPtr<String>&, StringSplitOptions) const按子串拆分字符串。
Split(const ArrayPtr<String>&, int, StringSplitOptions) const按子字符串拆分字符串。目前,仅支持零或一个元素的分隔符数组。
StartsWith(const String&) const检查字符串是否以指定子字符串开头。
StartsWith(const String&, System::StringComparison) const检查字符串是否以指定子字符串开头。
StartsWith(const String&, bool, const SharedPtr<System::Globalization::CultureInfo>&) const检查字符串是否以指定子字符串开头。
String()默认构造函数。创建被视为 null 的字符串对象。
String(T&, typename std::enable_if<IsStringLiteral<T, char16_t>::value>::type *)基于字符串字面量构造字符串。将字面量视为以 null 结尾的字符串,依据字面量大小计算目标字符串长度。
String(const T&, typename std::enable_if<IsStringPointer<T, char16_t>::value>::type *)基于字符字符串指针构造字符串。将指向的字符串视为以 null 结尾,依据 null 字符计算目标字符串长度。
explicit String(T&, typename std::enable_if<IsStringLiteral<T, char>::value>::type *)基于字符串字面量构造字符串。将字面量视为 UTF8 编码的以 null 结尾的字符串,依据字面量大小计算目标字符串长度。
explicit String(const T&, typename std::enable_if<IsStringPointer<T, char>::value>::type *)基于字符字符串指针构造字符串。将指向的字符串视为 UTF8 编码的以 null 结尾,依据 null 字符计算目标字符串长度。
String(const char16_t *, int)从字符字符串指针和显式长度构造字符串。
String(const char *, int)从字符字符串指针和显式长度构造字符串。
String(const char16_t *, int, int)从起始位置的字符字符串指针使用长度构造字符串。
explicit String(const char16_t, int)填充构造函数。
String(const T&, typename std::enable_if<std::is_same<T, std::nullptr_t>::value>::type *)nullptr 构造函数。声明为模板以解决与其他模板构造函数的优先级冲突。
explicit String(T&, typename std::enable_if<IsStringLiteral<T, wchar_t>::value>::type *)基于宽字符串字面量构造字符串。将字面量视为以 null 结尾的字符串,依据字面量大小计算目标字符串长度。某些平台上 wchar_t 的转换耗时较长,因此不允许隐式转换。
explicit String(const T&, typename std::enable_if<IsStringPointer<T, wchar_t>::value>::type *)基于宽字符字符串指针构造字符串。将指向的字符串视为以 null 结尾,依据 null 字符计算目标字符串长度。某些平台上 wchar_t 的转换耗时较长,因此不允许隐式转换。
explicit String(const wchar_t *, int)从宽字符字符串指针和显式长度构造字符串。某些平台上 wchar_t 的转换耗时较长,因此不允许隐式转换。
explicit String(const wchar_t, int)填充构造函数。某些平台上 wchar_t 的转换耗时较长,因此不允许隐式转换。
String(const String&)拷贝构造函数。
String(String&&)移动构造函数。
String(const ArrayPtr<char16_t>&)将整个字符数组转换为字符串。
String(const ArrayPtr<char16_t>&, int, int)将字符数组子范围转换为字符串。如果参数超出数组边界,则构造空字符串。
explicit String(const codeporting_icu::UnicodeString&)将 UnicodeString 包装为 String
explicit String(codeporting_icu::UnicodeString&&)移动构造函数。
explicit String(const std::wstring&)从 widestring 创建 String
explicit String(const std::u16string&)从 utf16 字符串创建 String
explicit String(const std::string&)从 UTF-8 格式的 std::string 字符串创建 String
explicit String(const std::u32string&)从 std::u32string 字符串创建 String
Substring(int32_t) const提取子字符串。
Substring(int32_t, int32_t) const提取子字符串。
ToAsciiString() const将字符串转换为 std::string。使用 ASCII 编码。
ToByteArray(int32_t, int32_t, bool) const将字符串或子字符串转换为字节数组。
ToCharArray(int32_t, int32_t) const将字符串或子字符串转换为字符数组。
ToLower() const将所有字符串字符转换为小写。
ToLower(const SharedPtr<System::Globalization::CultureInfo>&) const使用特定文化将所有字符串的字符转换为小写。
ToLowerInvariant() const使用不变文化将所有字符串的字符转换为小写。
ToString() const在值类型对象上调用 ToString() 的上下文中,用于处理 String 类的包装器。
ToString(const SharedPtr<IFormatProvider>&) const在值类型对象上调用 ToString() 的上下文中,用于处理 String 类的包装器。
ToU16Str() const将字符串转换为 std::u16string。
ToU32Str() const将字符串转换为 std::u32string。
ToUpper() const将所有字符串的字符转换为大写。
ToUpper(const SharedPtr<System::Globalization::CultureInfo>&) const使用特定文化将所有字符串的字符转换为大写。
ToUpperInvariant() const使用不变文化将所有字符串的字符转换为大写。
ToUtf8String() const将字符串转换为 std::string。使用 UTF-8 编码。
ToWCS() const将字符串转换为 std::wstring。
Trim() const删除字符串开头和结尾的所有空白字符。
Trim(char_t) const删除字符串开头和结尾传入字符的所有出现。
Trim(const String&) const删除字符串开头和结尾传入字符集的所有出现。
Trim(const ArrayPtr<char_t>&) const删除字符串开头和结尾传入字符集的所有出现。
TrimEnd() const删除字符串结尾的所有空白字符。
TrimEnd(char_t) const删除字符串结尾传入字符的所有出现。
TrimEnd(const String&) const删除字符串结尾传入字符集的所有出现。
TrimEnd(const ArrayPtr<char_t>&) const删除字符串结尾传入字符集的所有出现。
TrimStart() const删除字符串开头的所有空白字符。
TrimStart(char_t) const删除字符串开头传入字符的所有出现。
TrimStart(const String&) const删除字符串开头传入字符集的所有出现。
TrimStart(const ArrayPtr<char_t>&) const删除字符串开头传入字符集的所有出现。
u_str() const返回 ICU 风格的以空字符结尾的缓冲区。可能会重新分配字符串。
~String()析构函数。

字段

字段描述
static Empty空字符串。
static Null空(null)字符串。

Typedefs

类型定义描述
reverse_iterator反向迭代器类型。

备注

#include "system/string.h"
#include <iostream>

int main()
{
  // 从字符数组构造字符串并打印它。
  const auto chars = {u'h', u'e', u'l', u'l', u'o'};
  const System::String string1(chars);
  std::cout << string1 << std::endl;

  // 从字节数组构造字符串并打印它。
  const uint8_t bytes[] = {0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0};
  const auto string2 = System::String::FromUtf8(bytes);
  std::cout << string2 << std::endl;

  // 修剪下面的字符串并打印它。
  const System::String string3(u"   This string contains whitespaces in the beginning and at the end.   ");
  std::cout << '"' << string3.Trim() << '"' << std::endl;

  // 打印 . 中的单词数。
  std::cout << "Number of words: " << string3.Trim().Split(' ')->get_Length() << std::endl;

  return 0;
}
/*
This code example produces the following output:
hello
world
"This string contains whitespaces in the beginning and at the end."
Number of words: 11
*/

另见