RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Intermediate
Feb 12, 2008

Optimize the Performance of Your Internationalized Applications

More and more Windows applications are internationalized to take advantage of the global marketplace. However, multi-byte string handling functions may impact program's performance and should not be used with single-byte character sets (SBCS). One workaround for this is to use a compile-time parameter and create two executables: one for a single-byte code pages and one for multi-byte code pages. An example of how to do this can be found in this Microsoft article.

Another method is to use the GetCPInfo function to determine at run-time whether the program is running on a system that uses SBCS. This method creates only one executable file. The GetCPInfo function is described on MSDN here. Its extended version is called GetCPInfoEx. This function returns the maximum number of bytes for a character in the current code page in the CPINFO structure member called MaxCharSize, as in the example below:

   CPINFO cpinfo;
   if (GetCPInfo(CP_ACP, &cpinfo))
      if (cpinfo.MaxCharSize == 1)
         cout << ?Single-byte character set\n?;
         cout << ?Not a single-byte character set\n?;
Alexander Ocher
Close Icon
Thanks for your registration, follow us on our social networks to keep up-to-date