将Java字节转换为C ++

时间:2014-08-29 11:44:36

标签: c++ qt

我使用Qt / C ++并在Qt / C ++中重写我的Java项目,所以我无法将这些代码转换为C ++

爪哇:

public static String getByteValueArr(String item)
{
   StringBuilder sb = new StringBuilder();
   for(byte b : item.getBytes())
      sb.append(String.valueOf(b) + " ");

   return sb.toString();
}

我在C ++中使用过它

int MainWindow::getVal(QChar *word)
{
   return word->digitValue();
}

但它会像

一样返回

我知道C ++并不包含" byte"定义。所以我无法在C ++中转换此方法。

感谢。

2 个答案:

答案 0 :(得分:2)

char是表示单个字节的C ++类型。

可以构建字符串,或者使用stringstream(类似于StringBuilder)来构建字符串。他们的角色可以直接迭代。所以C ++的等价物就是

#include <string>

std::string getByteValueArr(std::string const & item) {
    std::string result;                      // or std::stringstream ss;
    for (int c : item) {
        result += std::to_string(c) + ' ';   // or ss << c << ' ';
    }
    return result;                           // or return ss.str();
}

答案 1 :(得分:0)

如果我正确理解你的Java代码,那应该是C ++等价的

#include <sstream>
#include <string>

std::string getByteValueArr(const std::string& item)
{
    std::stringstream ss;
    for (char c : item)
        ss << int(c) << " ";

    return ss.str();
}