C++で文字列のSplit

C++でtsvっぽいファイルを読みたいなあと思ったんですが、
どうも標準ライブラリにSplitをする関数がないみたいなので、
自分で書いてみた。
getline()で読み込んだ一行に対して処理してます。
#で始まる行はコメントとして無視してます。

STLのコンテナのメモリ管理がどうなっているのかよく分かっていないのでどきどきです。

    std::list<std::string> bufs;
    std::string buf = "";
    std::string::iterator p = str.begin();

    if (*p == '#') return b;

    for(; p != str.end() ;p++) {
        if (*p == '\t') {
            bufs.push_back(buf);
            buf = "";
            continue;
        }else{
            buf += *p;
        }
    }
    if(bufs.size() > 2) {
         //...
    }