相关疑难解决方法(0)

uint8_t无法用cout打印

关于在C++中使用整数,我有一个奇怪的问题.

我写了一个简单的程序,它将一个值设置为一个变量然后打印它,但它没有按预期工作.

我的程序只有两行代码:

uint8_t aa = 5;

cout << "value is " << aa << endl;
Run Code Online (Sandbox Code Playgroud)

这个程序的输出是 value is

即,它打印为空白aa.

当我改变uint8_tuint16_t上面的代码就像一个魅力.

我使用64位的Ubuntu 12.04(精确穿山甲),我的编译器版本是:

gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Run Code Online (Sandbox Code Playgroud)

c++

129
推荐指数
7
解决办法
7万
查看次数

为什么以十六进制读取uint8_t无法正常工作?

考虑如下代码:

#include <iostream>
#include <sstream>

int main()
{
    std::stringstream ss;
    ss << "a0 b1";

    uint8_t byte;
    ss >> std::hex >> byte;    

    std::cout << std::hex << byte << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么这个输出a,而不是a0即使a0装配在uint8_t十六进制?

c++ iostream

7
推荐指数
1
解决办法
142
查看次数

为什么 uint8_t 和 int8_t 不能与文件和控制台流一起使用?

$ file testfile.txt\ntestfile.txt: ASCII text\n\n$ cat testfile.txt \naaaabbbbccddef\n\n#include <iostream>\n#include <fstream>\n#include <string>\n#include <cstdint>\ntypedef uint8_t byte; // <-------- interesting\ntypedef std::basic_ifstream<byte> FileStreamT;\nstatic const std::string FILENAME = "testfile.txt";\nint main(){\n    FileStreamT file(FILENAME, std::ifstream::in | std::ios::binary);\n    if(!file.is_open())\n        std::cout << "COULD NOT OPEN FILE" << std::endl;\n    else{\n        FileStreamT::char_type buff;\n        file.read(&buff,1);\n        std::cout << (SOMECAST)buff; // <------- interesting\n    }\n    std::cout << "done" << std::endl;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

根据 typedef 中的内容以及它转换为(或未转换)的内容,它会执行各种愚蠢的操作。

\n\n

它恰好适用于“typedef char”并且没有强制转换。(如预期,转换为 int 时为 97)

\n\n

uint8_t 和 int8_t 都会打印

\n\n
    \n
  • 没有演员就什么都没有

  • \n
  • 转换为 char 或 unsigned char 时没有任何内容 …

c++ types type-conversion ifstream uint8t

-3
推荐指数
1
解决办法
4763
查看次数

标签 统计

c++ ×3

ifstream ×1

iostream ×1

type-conversion ×1

types ×1

uint8t ×1