我有這個格式的字符串:我怎樣才能提取值對從C++字符串
"name1":1234 " name2 " : 23456 "name3" : 12345
等等...
我曾嘗試使用嵌套while循環和兩個整數存儲在string::substr
中使用的位置和長度,但我找不到一個合適的方式來獲取它(大多數時候我最終從字符串中結束)。
這些值不需要存儲,因爲我可以調用一個函數來處理它們,只要我得到它們。
這是我迄今所做的:提前
void SomeClass::processProducts(std::string str) {
unsigned int i = 0;
std::string name;
while (i < str.length()) {
if (str[i] == '\"') {
int j = 1;
while (str[i + j] != '\"') {
j++;
}
name = str.substr(i + 1, j - 1);
i += j;
}
else if (str[i] >= '0' && str[i] <= '9') {
int j = 1;
while (str[i + j] >= '0' && str[i + j] <= '9') {
j++;
}
//This is just processes the values
std::stringstream ss;
std::string num = str.substr(i, j);
ss.str(num);
int products = 0;
ss >> products;
if (products == 0) {
Util::error(ERR_WRONG_PRODUCTS);
}
int pos = getFieldPos(name);
if (pos == -1) {
Util::error(ERR_WRONG_NAME);
}
else {
fields[pos].addProducts(products);
}
i += j;
}
i++;
}
}
感謝。
歡迎堆棧溢出。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。 –
請[編輯]您的問題,以顯示您嘗試過的並不適合您的實際代碼。到目前爲止,你自己調試過什麼? –
你想得到什麼結果?例如,你想從「name1」中得到什麼? –