std::vector<char>と astd::stringはメモリを共有できないため、コピーが必要です。それを考えると、最初に停止したい場合'\n':
std::string s( v.begin(), std::find( v.begin(), v.end(), '\n' ) );
トリックを行う必要があります。(結果の文字列には が含まれません'\n'。)
std::findおそらく、ベクトルの残りの部分を後で解析し続けることができるように、中間変数にの結果を保存する必要があります。