scanf("%s end", str) を istream をつかって書くとどうなるんでしょうか。
cin >> str >> "end" みたいな感じに簡単には書けないんですか?