わからんちん

int main()
{
	vector<vector<string>> data;
	ifstream fs("test.csv");
	string line;
	while( getline(fs, line, '\n'))
	{
		istringstream ss(line);
		string s;
		vector<string> ddata;
		while(getline(ss, s, ','))
		{
			ddata.push_back(s);
		}
		data.push_back(ddata);
	}
	for(int i = 0; i < 10; i++){
		istringstream buf(data[i][2]);
		double num;
		buf >> num;
		cout << num << endl;
	}
}

csvファイルから数値を格納した配列を生成するために,いろいろ調べて見よう見まねで書いてみた.なんでこれでdouble numが返ってくるのかよくわかってない.動くからいいけど.(これ見た人から叱られてしまうだろうか)わかんないところをちゃんと言うと,istringstreamでbufに入れた文字列をbuf>>numでdoubleにキャスト?できる理由がわからない.