C++ 复制到设置了十六进制标志的cout

C++ 复制到设置了十六进制标志的cout,c++,C++,有这样的东西: void print_signs() { const char* chars[] = {"abcdefghijklmnopqrstuvwxyz0123456789"}; std::copy(chars,chars + 1,std::ostream_iterator<const char*>(cout)); cout << hex; //trying to change the way output works for next line std::copy

有这样的东西:

void print_signs()
{
const char* chars[] = {"abcdefghijklmnopqrstuvwxyz0123456789"};
std::copy(chars,chars + 1,std::ostream_iterator<const char*>(cout));
cout << hex; //trying to change the way output works for next line
std::copy(chars,chars + 1,std::ostream_iterator<const char*>(cout));
}
无效打印符号()
{
常量字符*字符[]={“abcdefghijklmnopqrstuvxyz012456789”};
std::copy(chars,chars+1,std::ostream_迭代器(cout));
库特
但这并不像
std::string(…)
需要从堆中分配内存那样高效


/A.B.

我想作者会问只使用STL组件我很抱歉,但在回答我的问题之前,你看了我文章的最后一行了吗?“有没有办法让我们不能以十六进制格式打印它们(只使用STL组件)?”-只强调STL-这是我对你的“答案”的第一个反对意见。其次,您是否确实检查了循环是否正常工作?您是否知道运算符sizeof将返回对象的大小(在本例中为const char*),即4?您是否知道应该使用“\n”而不是std::endl?最后但并非最不重要的是,您是否知道比较有符号int(i)和无符号int(sizeof返回的值)只是非常糟糕的编码风格。你知道所有这些吗?另一个关于一个人在两行基本代码中会犯多少错误的例子。请不要再回答我的问题。请指出我评论中的片段,这在你看来是粗鲁的。我认为你的评论有点傲慢,如果我的(编辑)答案是你应该接受它,让你满意。
void print_signs()
{
    const std::string chars("abcdefghijklmnopqrstuvwxyz0123456789");
    std::cout << std::hex;
    std::copy(chars.begin(), chars.end(), std::ostream_iterator<int>(std::cout));
}
void print_signs()
{
    const char* chars[] = {"abcdefghijklmnopqrstuvwxyz0123456789"};
    const size_t charCount = strlen(chars[0]);
    std::cout << std::hex;
    std::copy(chars[0], chars[0] + charCount, std::ostream_iterator<int>(std::cout));
}
const size_t charCount = std::string(chars[0]).length();