result in (state_type& state, const extern_type* from, const extern_type* from_end, const extern_type*& from_next, intern_type* to, intern_type* to_limit, intern_type*& to_next) const;
[from,from_end) and places them in the range starting at to. It does not attempt to store more characters once to_limit is reached.[from,from_end), which contains all the characters between from and from_end, including the character pointed by from but not the character pointed by from_end.[to,to_limit), which contains all the characters between to and to_limit, including the character pointed by to but not the character pointed by to_limit.| member constant | int value | result |
|---|---|---|
| ok | 0 | Conversion successful: all characters were translated. |
| partial | 1 | Partial conversion: either the destination sequence [to,to_limit) is not long enough, or from_end has been reached but additional source characters are needed to complete a destination character.All previous characters have been successfully translated. |
| error | 2 | Conversion error: No valid conversion existed for the character pointed by from_next. All previous characters have been successfully translated. |
| noconv | 3 | No conversion: The source and destination character types (intern_type and extern_type) are the same. No conversion attempted: the source characters have been copied to the destination. |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// codecvt::in example
#include <iostream> // std::wcout, std::wcout
#include <locale> // std::locale, std::codecvt, std::use_facet
#include <string> // std::wstring
#include <cwchar> // std::mbstate_t
int main ()
{
typedef std::codecvt<wchar_t,char,std::mbstate_t> facet_type;
std::locale mylocale;
const facet_type& myfacet = std::use_facet<facet_type>(mylocale);
const char mystr[] = "Test string";
// prepare objects to be filled by codecvt::in :
wchar_t pwstr[sizeof(mystr)]; // the destination buffer (might be too short)
std::mbstate_t mystate = std::mbstate_t(); // the shift state object
const char* pc; // from_next
wchar_t* pwc; // to_next
// translate characters:
facet_type::result myresult = myfacet.in (mystate,
mystr, mystr+sizeof(mystr), pc,
pwstr, pwstr+sizeof(mystr), pwc);
if ( myresult == facet_type::ok )
{
std::wcout << L"Translation successful: ";
std::wcout << pwstr << std::endl;
}
return 0;
}
Translation successful: Test string
[from,from_end) are accessed.[to,to_limit) are modified.