According to the documentation, toStdString() converts characters using
toAscii(). That means non-ASCII characters (ones with codes above 127)
will get messed up unless you explicitly set codec by calling
QTextCodec::setCodecForCStrings().

On 08/30/2013 11:33 PM, Michael Jackson wrote:
> So maybe I should go with .toStdString().c_str() to remain as compatible as 
> possible.
> 
> --
> MJ.
> 
> On Aug 30, 2013, at 3:26 PM, Constantin Makshin <cmaks...@gmail.com> wrote:
> 
>> std::string is more like QByteArray than QString because it's just a
>> dynamically-resizeable version of classic C strings, i.e. it doesn't
>> know anything about encodings. On the other hand, internally QString
>> always is UTF-16 and therefore knows how to convert its contents to
>> other encodings.
>>
>> That means there's no single answer to your question.
>> As for your example, on *nix toUtf8().constData() will likely do the
>> trick, on Windows it's better to use utf16() together with _wfopen().
>>
>> On 08/30/2013 11:08 PM, Michael Jackson wrote:
>>> I have a large code base that we are migrating to more fully utilize Qt 
>>> classes. Many places in the code have lines like the following:
>>>
>>> std::string path("/path/to/foo.txt");
>>> FILE* f = fopen(path.c_str(), "wb");
>>>
>>> If the "path" variable is now declared as a QString which QString method 
>>> would be me the equivalent as the "c_str()" of std::string?
>>>
>>> Not sure if I should be using "toASCII()" or "data()" or "toUtf8()" or what 
>>> exactly.
>>>
>>> Google didn't really give me a definitive answer.
>>>
>>> Many Thanks
>>> --
>>> Mike Jackson
>>> imikejackson & gmail * com

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to