【发布时间】:2019-12-27 05:38:53
【问题描述】:
我可以用普通的 for 循环来做到这一点:
vector<unsigned char> v{3, 13, 23, 83};
stringstream ss;
for (auto &el : v)
ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(el);
cout << ss.str() << endl;
我正在寻找允许我使用 std::copy: 的方法
std::copy(
std::begin(v),
std::end(v),
std::ostream_iterator<int>(ss << std::hex << std::setw(2) << std::setfill('0'))
);
它没有给我与 for 循环方法相同的输出值。 我对此有两个问题:
- 我怎样才能使它工作,以便 std::copy 方法提供与 for 循环方法相同的输出值和格式?
- 这两种方法中哪一种在理论上更好?
【问题讨论】:
-
什么是正确的输出值?你得到的错误输出值是什么?
-
我需要 std::copy 的输出与 for 循环方法相同
-
我再重复一遍:正确的输出是什么,它与错误的输出有何不同?
-
很明显,第一个结果是
030d1753,第二个结果是03d1753。
标签: c++ casting iterator format copy