使用字符,我发现的唯一解决方案是static_cast两次。有没有办法解决这个问题?
Working with chars and only solution I've found is to static_cast twice. Is there a way around this?
这段代码看起来有点荒谬,但这是我发现处理我的问题的唯一方法…
char word[10];
cout << std::hex << static_cast<int>(static_cast<unsigned char>(word[i]));
这是我将字符计数为十六进制值(包括带符号字符)的方式。(据我所知)这似乎很有效,但我觉得这是一种非常愚蠢的方法。我应该补充一下,我正在读取一个文件,这就是为什么我的数据类型最初是char
您已经在做正确的方式,尽管使用int
将工作以及unsigned int
。如果你要在几个地方这样做,你可以创建一个函数或函子,例如:
int char_to_int(char ch)
{
return static_cast<unsigned char>(ch);
}
// ...
cout << hex << char_to_int(word[i]);
如评论中所述,另一个选择是没有强制转换的word[i] & 0xFF
。这实际上是实现定义的,但很可能会得到预期的结果。但是,如果您将在几个地方这样做,我建议将其包装在一个函数中,以便更明显地看到正在发生的事情。
相关文章:
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 有没有办法我可以在 C++ 中使用 if 语句来说明如果一个字符串不是两个名称的 eqal,它会给出一个输出,ATM i
- 有没有办法在循环中的条件至少满足一次时运行语句?
- 有没有办法将两个或多个不同的类链接到一个类中(稍后在向量上使用)?
- 有没有办法让C++函数采用具有相同成员的两种不同类型?
- 有没有办法一次运行 3 个创建窗口函数?
- 有没有办法仅在两个模板参数相同时才覆盖匹配的模板方法?
- "... already defined in *.obj"但我没有在同一范围内两次定义任何变量
- 有没有办法将两个输入图像堆叠到卤化物发生器中的单个 4 维缓冲区中?
- 有没有更好的方法来添加两个智能指针?
- 有没有办法在两个共享对象之间使用相同的全局变量?
- 有没有办法将来自不同语言的这两个值对齐?
- 有没有办法我可以从 istringstream 中读取两个字符
- 有没有办法在C++应用程序的多次执行中保存值?
- 有没有办法用循环擦除两个给定的值?
- 有没有更好的方法来检测向量中一个项目的多次出现?
- 有没有更有效的方法可以原子地添加两个浮点数?
- 两次商店有什么
- 有没有办法将 int 赋入具有递归函数的字符串中,而无需将数字反转两次
- 使用字符,我发现的唯一解决方案是static_cast两次。有没有办法解决这个问题?