0
我目前手邊的一個類中有User :: User(string id,string ratings)。 我正在嘗試將當前存儲的字符串「1 5 5 3 0 -5 0 5」(這是評級的參數,已經處理了id)轉換成一個無法更改的向量,稱爲向量(int)< - 整數評分作爲在字符串中看到的8個整數的向量。遍歷這個字符串並存儲單個值(包括底片)的最佳方法是什麼?無法在C++中將整數字符串轉換爲整數
我目前手邊的一個類中有User :: User(string id,string ratings)。 我正在嘗試將當前存儲的字符串「1 5 5 3 0 -5 0 5」(這是評級的參數,已經處理了id)轉換成一個無法更改的向量,稱爲向量(int)< - 整數評分作爲在字符串中看到的8個整數的向量。遍歷這個字符串並存儲單個值(包括底片)的最佳方法是什麼?無法在C++中將整數字符串轉換爲整數
#include <sstream>
#include <vector>
#include <iostream>
int main()
{
std::istringstream is("1 5 5 3 0 -5 0 5");
std::vector<int> v;
int n;
while (is >> n)
v.push_back(n);
for (size_t i = 0; i < v.size(); i++)
std::cout << v[i] << '\n';
return 0;
}
這個問題是一個典型的用例爲stream iterators
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>
int main()
{
std::istringstream iss{ "1 5 5 3 0 -5 -5" };
std::vector<int> v;
std::copy(std::istream_iterator<int>{ iss },
std::istream_iterator<int>{},
std::back_inserter(v));
std::copy(std::begin(v),
std::end(v),
std::ostream_iterator<int>(std::cout, " "));
}
退房'的std :: stringstream'。 – molbdnilo 2014-11-21 10:49:11
定義「最佳」...容易推斷正確性?擴展的錯誤處理?快速? – 2014-11-21 10:49:23
最有意義的是,它將最有效地將來自該流的int向量中的8個不同值(在這種情況下)放置(並且還將識別空間不應被轉換爲整數),並且否定將導致向量中的索引爲字符串中下一個索引的負版本。 – 2014-11-21 10:53:26