std::wstring.length()函数的结果是什么,是以wchar_t(s)表示的长度还是以符号表示的长度?为什么?
TCHAR r2[3];
r2[0] = 0xD834; // D834, DD1E - musical G clef
r2[1] = 0xDD1E; //
r2[2] = 0x0000; // '/0'
std::wstring r = r2;
std::cout << "capacity: " << r.capacity() << std::endl;
std::cout << "length: " << r.length() << std::endl;
std::cout << "size: " << r.size() << std::endl;
std::cout << "max_size: " << r.max_size() << std::endl;
Output>
capacity: 351
length: 2
size: 2
max_size: 2147483646发布于 2010-11-15 19:22:45
std::wstring::size()返回字符串中宽字符元素的数量。这与字符数不同(正如您正确注意到的)。
不幸的是,std::basic_string模板(以及它的实例,比如std::string和std::wstring)是编码不可知的。从这个意义上说,它实际上只是一个字节字符串的模板,而不是一个字符串。
发布于 2010-11-15 19:56:50
首先,std::wstring是std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >的实例化。
尽管大多数实际工作都是由char_traits完成的,并且可以编写自己的代码,但这样做主要是为了能够使用具有不同字符大小的C运行时库。
解析元素*的指针的方法是,直到到达由char_traits指示为终止符的字符。
但是,您可以使用指针和长度进行构造,在这种情况下,它将读取它告诉您的字符数,其中将包括任何空字节。您可能在basic_string中嵌入了空字节,如果您调用length()或size() (它们是同一事物的别名),它将告诉您它包含多少个字符。
在char_traits中不存在将多元素字符解码为一个字符的魔术,您也不应该尝试以这种方式实现它。
发布于 2010-11-15 19:19:43
方法返回字符串中当前的元素数。它与wstring::length一样,人们通常谈论的是单词、句子或段落的长度,而不是它的大小
https://stackoverflow.com/questions/4183736
复制相似问题