Middleware, development tools, realtime operating system
software and services for superior embedded design


Home
QNX Community Resources
QNX Documentation Library
mbstowcs

mbstowcs

QNX Software Systems
Developer Resources
Blogs
Board support packages
Foundry27 projects
Forums
Hardware support listing
Online video tutorials
Product documentation
Technical Articles

mbstowcs()

Convert a multibyte-character string into a wide-character string

Synopsis:

#include <stdlib.h>

size_t mbstowcs( wchar_t * pwcs,
                 const char * s,
                 size_t n );

Arguments:

pwcs
A pointer to a buffer where the function can store the wide-character string.
s
The string of multibyte characters that you want to convert.
n
The maximum number of bytes that you want to convert.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The mbstowcs() function converts a sequence of multibyte characters pointed to by s into their corresponding wide-character codes pointed to by pwcs, to a maximum of n bytes. It doesn't convert any multibyte characters beyond a NULL character.

This function is affected by LC_TYPE.

The mbsrtowcs() function is a restartable version of mbstowcs().

Returns:

The number of array elements modified, not including the terminating zero code, if present, or (size_t)-1 if an invalid multibyte character was encountered.

Errors:

EILSEQ
Invalid character sequence.

Examples:

#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    char *wc = "string";
    wchar_t wbuffer[50];
    int i, len;

    len = mbstowcs( wbuffer, wc, 50 );
    if( len != -1 ) {
        wbuffer[len] = '\0';
        printf( "%s(%d)\n", wc, len );
        
        for( i = 0; i < len; i++ ) {
            printf( "/%4.4x", wbuffer[i] );
        }
        
        printf( "\n" );
    }
    
    return EXIT_SUCCESS;
}

This produces the output:

string(6)
/0073/0074/0072/0069/006e/0067

Classification:

ANSI, POSIX 1003.1

Safety:
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes

See also:

errno

"Multibyte character functions" and "Wide-character functions" in the summary of functions chapter.