【问题标题】:How to convert int to char (not const char) for use with putChar();如何将 int 转换为 char(不是 const char)以便与 putChar() 一起使用;
【发布时间】:2016-01-06 21:49:43
【问题描述】:

我正在编写一个 QT 控制台应用程序,以使用 QSerialport 库从 FTDI 电缆中写入数据。 (FTDI 电缆连接到逻辑分析仪,因此我可以调试输出)

我需要将int x = 255; 传递到myserial->putChar();

我尝试使用以下方法将 int 转换为 char:

int x = 255; std::string s = std::to_string(x); char const *myChar = s.c_str(); myserial->putChar(myChar);

并收到错误:

cannot initialize a parameter of type 'char' with an lvalue of type 'const char*'

但是,在这个以 char 开头的测试中,一切正常:

char myChar = 255; myserial->putChar(myChar);

在逻辑分析仪上给出0xFF 的正确结果。

有人可以帮忙吗?谢谢!

【问题讨论】:

  • 您是否会将 255 作为符号代码传递?

标签: c++ qt serial-port type-conversion


【解决方案1】:

去做吧:

int x = 255;
mySerial->putChar(x);

编译器将为您转换参数。除非你有一些你没有提到的额外要求,否则你可以让它变得更简单:

mySerial->putChar(255);

【讨论】:

  • 哇,我不敢相信我看错了。你的回答很完美。谢谢。
【解决方案2】:

这应该可行:

unsigned int x = 255;
myserial->putChar( static_cast<char>(x) );

【讨论】:

    【解决方案3】:

    您对s.c_str() 的调用返回一个C 字符串。在这种情况下,字符串只包含单个字符,但这与字符变量不同! C 字符串是以空字符 '\0' 结尾的连续字符序列。您试图传递给 putChar 的是指向该数组第一个字符的指针。

    根据其他几位海报的建议,您需要使用演员表:putChar( static_cast&lt;char&gt;(x) )

    【讨论】:

      【解决方案4】:

      您的第一个代码不起作用,因为std::to_string(255) 将给您:std::string("255"),因此您的c_str 转换后,您的代码与:myserial-&gt;putChar(50); 相同。

      Naschkatze 给出的答案肯定是更好的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-23
        • 2014-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-02
        相关资源
        最近更新 更多