PDA

View Full Version : NSString to QString



ABBAPOH
4th October 2010, 08:57
How can i convert NSString to QString? Or, better NSUrl to QUrl or QString
I found inline function qt_mac_NSStringToQString, but i can't use it because headers are private and not installed on Mac by default. Besides, they use inncludes in form of "header.h" (#include <qapplication.h>) which are not seen to compiler too.

ABBAPOH
5th October 2010, 11:50
Safe variant:

QString qt_mac_NSStringToQString(const NSString *nsstr)
{
NSRange range;
range.location = 0;
range.length = [nsstr length];
QString result(range.length, QChar(0));

unichar *chars = new unichar[range.location];
[nsstr getCharacters:chars range:range];
QString result = QString::fromUtf16(chars, range.length);
delete chars;
return result;
}

Unsafe variant (a little faster):

QString qt_mac_NSStringToQString(const NSString *nsstr)
{
NSRange range;
range.location = 0;
range.length = [nsstr length];
QString result(range.length, QChar(0));

unichar *chars = reinterpret_cast<unichar *>(result.data())
[nsstr getCharacters:chars range:range];
return result;
}

Any suggestions?

philb
1st March 2011, 07:42
QString qt_mac_NSStringToQString(const NSString *nsstr)
{
NSRange range;
range.location = 0;
range.length = [nsstr length];
QString result(range.length, QChar(0));

unichar *chars = new unichar[range.length];
[nsstr getCharacters:chars range:range];
QString result = QString::fromUtf16(chars, range.length);
delete[] chars;
return result;
}


works better