スペース、タブ、および改行区切り文字のサポートが必要です。sscanfでこれを行うことができますが、char* よりも文字列に固執したいと思います。
C++11 でこれを達成する方法はありますか?
この簡単なプログラムはどうですか:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
int main()
{
std::vector<std::string> v;
std::istringstream is{"example input\ttext\nhere"};
std::copy(std::istream_iterator<std::string>(is),
std::istream_iterator<std::string>(),
std::back_inserter(v));
for (const auto& s : v)
std::cout << s << '\n';
}
このプログラムからの出力は
例 入力 文章 ここ
ご覧のとおり、空白を区切り文字として使用しています。もちろん、次のように入力演算子も使用できます。
std::string s;
while (is >> s)
v.push_back(s);
上記の代わりにstd::copy
同じ結果が得られます。