0
Helo。誰も私に出力演算子を割り当てることができますが、その上でコピーを実行することはできません。コピーはthrid引数としてOutputIterator必要がありますが、私はあなたがここで見ることができますいくつかの奇妙なエラーを持っている:http://cpp.sh/5akdx出力イテレータにコピーできません
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
bool space(const char &c) {
return c == ' ';
}
bool not_space(const char &c) {
return !space(c);
}
template<class Out>
void split(const string &str, Out os) {
typedef string::const_iterator iter;
iter i = str.begin();
while (i != str.end()) {
i = find_if(i, str.end(), not_space);
iter j = find_if(i, str.end(), space);
if (i != str.end())
//*os++ = string(i, j); //THIS WORKS
copy(i, j, os); //THIS DOESN'T WORK
i = j;
}
}
int main()
{
string s;
while (getline(cin, s))
split(s, ostream_iterator<string>(cout, "\n"));
return 0;
}
問題を、これは
*os++ = string(i, j);
を動作することである。しかし、それはしていません:
'std :: ostream_iterator'が必要です。 'string'ではなく' char'に注意してください。 'i'と' j'は 'string'に' char'を繰り返します。 –
WhozCraig