为什么这段将 std::array 转换为 std::string 的代码不显示任何内容?

Why doesn't this code to convert a std::array to a std::string not display anything?

本文关键字:std 代码 显示 任何内 array 为什么 转换 string      更新时间:2023-10-16

我使用这个模板将我的std::array更改为字符串。为什么它没有打印出任何东西?

#include <iostream>
#include <string>
#include <array>
template<std::size_t N>
std::string to_string_2(std::array<char, N> const& arr) {
  const char* str = reinterpret_cast<const char*>(arr.data());
  return std::string( str, str+N );
}
int main()
{
   std::array<char, 16> state = {1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,0};
   std::cout << to_string_2(state) << std::endl;
}

您正在创建一个字符数组,其数值在1到16之间。这些是非打印字符,所以你不应该看到任何东西。

尝试将它们的值更改为确实显示的字符,如'A',看看这是否解决了问题。

希望这对你有帮助!

你为什么认为它不会打印出任何东西呢?我猜它确实从原始数组中打印出带有ACSII代码的字符,但它们恰好对应于平台上的"不可见"字符,即屏幕上不可见的字形表示的字符。

您可以将程序的输出重定向到一个文件,然后在十六进制编辑器中打开该文件。我敢肯定,您将立即在该文件中发现您的字符代码序列。