C++初学者です。
std::fstream等を使い、テキストファイルの中身をstd::stringのオブジェクトに格納したいと思います。
テキストファイルtext.txtはShift_JISで書かれ、空白や改行、マルチバイトの文字を含みます。サイズは不明です。
この改行などは、可能な限り保持するとします。

自分は、以下のようなコードを記述しました。

std::string str;
std::ifstream ifs;

ifs.open("text.txt",std::ios::in);
if(!ifs.is_open()) return; //オープン失敗

while(!ifs.eof())
{
 std::string line;
 std::getline(ifs,line);
 str += line + "\n";
}

1.getlineや>>を使って、少しずつ読み込むという方法で良いのか分かりません。一括読み込みの方法はあるのでしょうか。
2.getlineを使う場合、一時的にlineを用意し、それからstrに格納する方法を採っています。何となく冗長な気もしますが、こんなもんなのでしょうか。
3.最後に改行コードを付加する時、+"\n" という書き方をしていますが、std::endlを使う方法、もしくはそれに似たような方法はあるのでしょうか。