GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::codecvt::length,do_length(3) C++ Standard Libary std::codecvt::length,do_length(3)

std::codecvt::length,do_length - std::codecvt::length,do_length


Defined in header <locale>
public:


int length( StateT& state,
const ExternT* from, (1)
const ExternT* from_end,


std::size_t max ) const;
protected:


virtual int do_length( StateT& state,
const ExternT* from, (2)
const ExternT* from_end,


std::size_t max ) const;


1) public member function, calls the member function do_length of the most derived
class.
2) attempts to convert the externT characters from the character array defined by
[from, from_end), given initial conversion state state, to at most max internT
characters, and returns the number of externT characters that such conversion would
consume. Modifies state as if by executing do_in(state, from, from_end, from, to,
to+max, to) for some imaginary [to, to+max) output buffer.


The number of externT characters that would be consumed if converted by do_in()
until either all from_end-from characters were consumed or max internT characters
were produced, or a conversion error occurred.


The non-converting specialization std::codecvt<char, char, std::mbstate_t> returns
std::min(max, from_end-from)

// Run this code


#include <locale>
#include <string>
#include <iostream>


int main()
{
// narrow multibyte encoding
std::string s = "z\u00df\u6c34\U0001d10b"; // or u8"zß水𝄋"
// or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b";
std::mbstate_t mb = std::mbstate_t();
std::cout << "Only the first " <<
std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
std::locale("en_US.utf8")
).length(mb, &s[0], &s[s.size()], 2)
<< " bytes out of " << s.size() << " would be consumed "
" to produce the first 2 characters\n";
}


Only the first 3 bytes out of 10 would be consumed to produce the first 2 characters


do_in converts a string from externT to internT, such as when reading from file
[virtual] (virtual protected member function)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.