Ahmed Hamed
Ahmed Hamed

Reputation: 59

Printing arabic string in c++

I'm beginner in C++

I'd like to print Arabic statement in C++ using Borland C, but I failed , I also tried to save the file as UTF-8 but it didn't help.

So please if any one knows anything about this or about what is the problem or how to configure the compiler to print Arabic please help me.

#include<iostram.h>
#include<conio.h>
void main()
{
   clrscr();
   char x [5] = {'ا','ح','م','د'};
   for(int i = 0; i< 5; i++)
       cout << x[i];
   getche();
}

Upvotes: 5

Views: 5475

Answers (3)

masoud
masoud

Reputation: 56479

If your BorlandC++ is under DOS

By default you have not any character set to show it as Arabic. But those days, there were applications which change extended ASCII characters to other languages such as Arabic, Persian, ... .

Steps you should do:

  • If you are using Windows Vista/7+, first you should use DosBox (you need Fullscreen-mode)

  • You must change the default ASCII font table in memory

  • Something like vegaf.com which defines Persian/Arabic alpha-beta

Note: UTF-8 is undefined for this system

Upvotes: 3

bmargulies
bmargulies

Reputation: 100042

First of all, you are assuming that your source code can contain Arabic characters. This is a very bad idea, and depends on the assumption that the compiler is interpreting your source file in the same code page as your editor is writing it in.

The safest way to handle Arabic or other arbitrary Unicode in Windows C++ is to compile with _UNICODE, declare variables of wchar_t (and friends), and use Unicode constants like '\u6041' for your Arabic characters. If you must do things with 'char', you will have to come up with the multi-byte \x sequences in the right code page for your Arabic characters, and deal with the fact that a single char can't hold an Arabic character in UTF-8.

Finally, since you are using cout, this will only show you Arabic if the current code page of your DOS box is an Arabic code page.

Upvotes: 4

pictr
pictr

Reputation: 99

C++11 is the only C++ standard that can offer native support for UTF-8 ( and other UTF charsets ) encoding.

in pre C++11 releases you can simply use a third part library if you need UTF-8 support like this one .

Upvotes: -1

Related Questions