Dire que j'ai ceci:équivalent sscanf Qt
QString mystring = "67 49 213 59";
int a, b, c, d;
Y at-il une alternative à Qt sscanf donc je peux lire les nombres dans les variables int
?
Dire que j'ai ceci:équivalent sscanf Qt
QString mystring = "67 49 213 59";
int a, b, c, d;
Y at-il une alternative à Qt sscanf donc je peux lire les nombres dans les variables int
?
QTextStream
fournit l'équivalent des flux de la bibliothèque standard. Ne pas oublier que le flux de texte doit être détruit avant la chaîne.
QString mystring = "67 49 213 59";
QTextStream myteststream(&mystring);
int a = 0, b = 0, c = 0, d = 0;
myteststream >> a >> b >> c >> d;
+1: Bien que cela puisse valoir la peine d'ajouter un point, cela équivaut à iostreams, pas à 'sscanf'. –
int a, b, c, d;
QString s("67 49 213 59");
QTextStream(&s) >> a >> b >> c >> d;
Vous ne pouvez pas prendre l'adresse d'un temporaire comme vous le faites dans votre premier exemple. Si votre compilateur le permet, il ne devrait pas. –
@Benjamin Lindley: oui, j'ai ajouté la syntaxe correcte dans la partie inférieure. GCC signale l'erreur et avertit d'un -strict. Mais je n'ai pas essayé si cela permettait d'accepter la syntaxe. Dois-je supprimer cette première ligne? – CapelliC
QString str("67 49 213 59");
QStringList list = str.split(" ");
int a[list.count];
for (int i = 0; i < list.count; i++)
a[i] = list[i].toInt();
Une explication pourrait être utile –
-1: Le code sans prose est nocif. –
Pour moi, cela ressemble à un exemple de code propre et répondre à la question. Le code est simple et simple. – ChristophK
vous pouvez toujours faire juste
QByteArray oString = mystring.toAscii();
const char *pszString = oString.constData();
puis utilisez sscanf() comme d'habitude.
En supposant que vous pouvez utiliser Boost, il existe une distribution lexicale, ainsi vous pouvez convertir des chaînes en entiers, ou d'autres formats numériques. Il faudra que vous divisiez votre chaîne en valeurs séparées, mais cela ne devrait pas être trop difficile. – thecoshman
Je ne veux pas mélanger du code Qt avec boost, stdio ou std. Les styles sont totalement différents, et en plus, Qt est une bibliothèque assez complète. Je pense qu'il est généralement capable de remplacer complètement le runtime C et C++ en termes de fonctionnalités. – sashoalm
Qu'est-ce que vous en avez besoin? Vous pouvez convertir QString à une chaîne C, en utilisant par exemple QString :: toLocal8Bit() et le nourrir à sscanf? –