說我有這樣的:的Qt的sscanf等效
QString mystring = "67 49 213 59";
int a, b, c, d;
有一個Qt的替代sscanf的,所以我可以閱讀數字到int
變量?
說我有這樣的:的Qt的sscanf等效
QString mystring = "67 49 213 59";
int a, b, c, d;
有一個Qt的替代sscanf的,所以我可以閱讀數字到int
變量?
QTextStream
提供了相當於標準庫的流。 不要忘記,文本流應該銷燬之前的這個字符串。
QString mystring = "67 49 213 59";
QTextStream myteststream(&mystring);
int a = 0, b = 0, c = 0, d = 0;
myteststream >> a >> b >> c >> d;
+1:雖然它可能更值得一提,這是相當於iostreams,而不是「sscanf」。 –
int a, b, c, d;
QString s("67 49 213 59");
QTextStream(&s) >> a >> b >> c >> d;
在第一個例子中,你不能像你正在做的那樣獲得臨時地址。如果你的編譯器允許它,它不應該。 –
@Benjamin Lindley:是的,我在底部添加了正確的語法。海灣合作委員會發出錯誤信號,並警告關於 - 嚴格。但是,如果允許接受語法,我沒有嘗試過。我應該刪除第一行嗎? – 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();
你總是可以只是做
QByteArray oString = mystring.toAscii();
const char *pszString = oString.constData();
,然後使用sscanf的()爲正常。
假設你可以使用Boost,那麼就有這樣一個詞彙轉換,就是將字符串轉換爲整數或其他數字格式。它會要求你將你的字符串分解成單獨的值,但這不應該太難 – thecoshman
我只是不想將Qt代碼與boost,stdio或std混合。樣式完全不同,此外,Qt是一個相當完整的庫。我認爲它通常能夠在功能方面完全取代C和C++運行時。 – sashoalm
你需要什麼?您可以將QString轉換爲C字符串,例如使用QString :: toLocal8Bit()並將其提供給sscanf? –