2014-08-29 66 views
0

我使用Qt/C++工作,我重寫的Qt/C++我的Java項目,所以我無法把這些代碼C++轉換的Java字節到C++

的Java:

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++中不包含 「字節」 的定義。所以我不能在C++中轉換這個方法。

謝謝。

+0

你使用'QString'-s或'std :: string'-s? – 2014-08-29 11:46:04

+0

Qt或C++?你試過什麼? – fritzone 2014-08-29 11:46:06

+4

java中的'byte'等價於C++中的'char'。 – 2014-08-29 11:46:10

回答

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(); 
} 
+0

謝謝它的工作。 – 2014-08-29 12:08:46

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(); 
}