std::string str = "abcd\nefgh\nijkl\n"
のような文字列を\nで分割したいのですが、
C風でなくC++風に分割するにはどうすればよいのでしょうか?

例えばstr1にabcd、str2にefgh、str3にijklのようなイメージです。

findで\nを探してsubstrで取り出すという方法を考えたのですが、
より良い方法はあるのでしょうか・