有这样的事情:
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组件)? 谢谢。
答案 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。