0

スペース、タブ、および改行区切り文字のサポートが必要です。sscanfでこれを行うことができますが、char* よりも文字列に固執したいと思います。

C++11 でこれを達成する方法はありますか?

4

1 に答える 1

1

この簡単なプログラムはどうですか:

#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同じ結果が得られます。

于 2013-08-19T12:02:15.253 に答える