下面的這個函數只需要一個字符串,該字符串用64位整數填充,每個值由一個分隔符分隔,它將被放入向量中。在C++中使用分隔符高效解析多個數字的函數
vector<unsigned long long int> getAllNumbersInString(string line, char delim){
vector<unsigned long long int> v;
string word;
stringstream stream(line);
unsigned long long int num;
while(getline(stream, word, delim))
num = atol(word.c_str());
v.push_back(num);
}
return v;
}
此功能工作正常的情況下,例如,我們有「」作爲分隔符,但分隔符會失敗,如果在字符串變量‘線’的數據是這樣的:
432 12332 2234 12399
儘管看起來數據使用空格作爲分隔符,但使用上面的代碼,整個代碼將在邏輯上失敗。例如,白色空間之間的空白是未定義的,atol將返回0,並將這些零置入向量中。
爲了更好地防範這些不規則現象,我應該對這些代碼採取哪些措施?
或許'stream >> num'就夠了? – WhozCraig 2013-02-10 17:44:28