請指導我如何,我可以將字符串轉化的載體要轉換一個向量的數據類型
std::vector<string> strVect; --> std::vector<float or double> flVect;
(如strVect包含像價值觀{ 「0.1111」, 「0.234」, 「0.4556」})
使用C++將浮點數向量化爲。
在此先感謝。
請指導我如何,我可以將字符串轉化的載體要轉換一個向量的數據類型
std::vector<string> strVect; --> std::vector<float or double> flVect;
(如strVect包含像價值觀{ 「0.1111」, 「0.234」, 「0.4556」})
使用C++將浮點數向量化爲。
在此先感謝。
這裏是不使用升壓解決方案:
std::vector<string> strVect;
//...
std::ostringstream ss;
std::vector<double> flVect(strVect.size());
for(size_t i = 0; i < strVect.size(); ++i)
{
ss.str(strVect[i]);
ss >> flVect[i];
}
除了現有的答案,一個非常簡單的方法是使用C++ 11個字符串轉換函數和C++ 11個lambda表達式:
std::vector<string> strVect = ...;
std::vector<float> flVect(strVect.size());
std::transform(strVect.begin(), strVect.end(), flVect.begin(),
[](const std::string &arg) { return std::stof(arg); });
與double
類似,當然也可以使用std::stod
。
第一個不會工作。 'stof'是過載,你必須將其轉換爲正確的類型。 'flVect(strVect.size())'在這裏可能沒有開銷,但我更喜歡'vector :: reserve'。這樣,如果這種情況成爲通用上下文,就不會有意想不到的性能下降。 – pmr
@pmr確實,cppreference.com對我說謊了(我應該意識到我自己並沒有對'std :: string'進行任何處理,它確實只對'std :: string'有效)。 –
我不能告訴你想要做什麼,但我打賭'std :: transform'與'boost :: lexical_cast'結合起來就可以完成這項工作。 –
謝謝你能給我它的語法。 – DataMiner
@ user986789:「謝謝你,我可以編碼」。 FTFY。 –