[Development] New feature to qstring | QString::toBool()

Frans Klaver fransklaver at gmail.com
Tue Oct 25 22:53:02 CEST 2011


Hi,

On Tue, 25 Oct 2011 22:19:29 +0200, Antonis Tsiapaliokas  
<kok3rs at gmail.com> wrote:

> Also, please read the comment from the John Brooks, which i think that  
> he isright. So what do you think?

I would say he is right. He strongly hints at the possibility that bool is  
too context dependent. And I agree with that.

This thing is tricky to tackle. QString was created to easily handle  
localization. Chances are you are going to not only interpret true/false,  
but also ja/(nee|nein|nej), oui/non, si/no and whatever may mean true or  
yes (or OK?) in whatever language. What if a language introduces a new  
word to mean true? You just don't have to handle natural language issues  
with doubles, floats and integers, which is why that can be done by  
QString hands down.

I think deciding on the meaning of a string is one of the things better  
left to its user. Outside the string you know exactly what you expect. A  
number, a word, what language the word is going to be in, which words are  
going to mean 'true', which are 'false' and which should produce an error.

bool yes = (str.toInt() != 0);
bool yes = (str.compare(tr("true"), Qt::CaseInsensitive) == 0);
bool yes = (str.compare("true", Qt::CaseInsensitive) == 0);
bool yes = QVariant(str).toBool(); // tricky but might work

Based on the fact that you need a lot of information to correctly  
interpret the string into a boolean value, I would say this can't really  
cover a lot of common cases without being a hackish blob of code. It is  
probably better to not include this in QString.

Cheers,
Frans



More information about the Development mailing list