为什么这段将 std::array 转换为 std::string 的代码不显示任何内容?
Why doesn't this code to convert a std::array to a std::string not display anything?
我使用这个模板将我的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代码的字符,但它们恰好对应于平台上的"不可见"字符,即屏幕上不可见的字形表示的字符。
您可以将程序的输出重定向到一个文件,然后在十六进制编辑器中打开该文件。我敢肯定,您将立即在该文件中发现您的字符代码序列。
相关文章:
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- "std::forward"和"std::move"真的不生成代码吗?
- 使用 std::vector C++快速排序,EXC_BAD_ACCESS代码 2
- std::string == 运算符在代码中不起作用
- 为什么 std::invocable 概念阻止了此代码的编译
- 如何防止使用 std::shared_ptr 的代码中的内存泄漏
- "p"数组如何使用 std::normal_distribution 存储以下代码中的值C++?
- 为什么使用 std::vector 的代码不能编译,但使用 std::unique_ptr 如果没有 noexcept
- 如何处理给定代码中的 std::out_of_range 错误?
- 在带有模板的函数中传递未知大小的 std::数组.如何更正此代码?
- 如何使用 GDB 从功能C++逐步调试到 std::function 用户代码?
- 避免使用 std::any 编写相同的重复类型检查代码
- 示例代码中使用分隔符将 std::string 拆分为 std::vector 的范围问题
- 使用 std::chrono::steady_clock 对线程/异步中的代码进行基准测试
- std::mutex::lock() 产生奇怪(和不必要的)ASM 代码
- 如何在数组类型的模板代码中计算std::size_t
- 将json代码格式化为std::string
- std::out_of_range 使用 libserial 库的 C++ 代码中的错误
- 为什么代码使用 std::map 无法编译?
- 这段 C++ 代码的奇怪行为(std::wcout 和 std::exception)