Я возился с ostream_iterator
и понял, что при указании разделителя он выводит слишком много. Поэтому вместо этого я пошел с ostringstream
, поэтому я могу изменить строку перед ее выходом. Но потом я понял, что должен просто использовать string
. Одна проблема, однако, с помощью следующего кода:Интересный std :: copy from std :: vector to std :: string поведение
кода
#include <iostream>
#include <iterator>
#include <vector>
#include <sstream>
int main()
{
std::vector<int> v(10);
std::fill(v.begin(), v.end(), 42);
std::string s(" ", v.size());
std::copy(v.begin(), v.end(), s.begin());
std::cout << s << std::endl;
return 0;
}
выход:
выход:
**********
Однако с
std::vector<int> v(10);
std::fill(v.begin(), v.end(), 42);
std::ostream_iterator<int> osi(oss);
std::copy(v.begin(), v.end(), osi);
std::cout << oss.str() << std::endl;
Выход
выхода
42424242424242424242
Очевидно, что это преобразование числа в ASCII представление. Он просто делает char cast
, или это побочный эффект сложных внутренних элементов STL? Независимо от того, как я могу изменить его на выходные числа вместо asteriks?
изменить его, чтобы получить что? – Jack
Что вы хотите, чтобы результат был? –
'int' и' char' - это разные вещи, вы знаете. –