复制到cout与十六进制标志设置

时间:2009-11-30 10:07:50

标签: 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(chars,chars + 1,std::ostream_iterator<const char*>(cout));
}

有没有办法让cout以十六进制格式打印它们(仅使用STL组件)? 谢谢。

1 个答案:

答案 0 :(得分:2)

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));
}

如果您绝对不想使用strlen,我可以使用:

const size_t charCount = std::string(chars[0]).length();

但这不如std::string(...)需要从堆中分配内存那么高效。

/A.B。