2017-07-29 69 views
-2

我有一個將整數轉換爲std :: string的函數。將int轉換爲字符串後始終爲0

std::stringstream Tools::toStringConverter; 
std::string Tools::tempString; 

std::string Tools::intToString(int num) { 
    toStringConverter.str(std::string()); 
    toStringConverter << num; 
    toStringConverter >> tempString; 
    return tempString; 
} 

當我嘗試同時使用迭代器來使用這種方法,我得到正確的結果

for(Button b : buttons) { 
    std::cout << Tools::intToString(b.id); 
} 

輸出。同樣是正確的,如果我試試這個:

std::cout<< intToString(3); 

但是當我使用簡單for循環,我總是得到0.

for(int i = 0; i < NetworkManager::MAX_PLAYERS; i++) { 
    std::cout << Tools::intToString(i) << " "; 
} 
+2

爲什麼不簡單使用['std :: to_string()'](http://en.cppreference.com/w/cpp/string/basic_string/to_string)? – user0042

+0

我得到to_string不是std的成員 –

+1

你用'-std = C++ 11'編譯器標誌集進行編譯嗎?你有沒有包含適當的頭文件? – user0042

回答

1
std::string Tools::intToString(int num) { 
    std::stringstream toStringConverter; 
    toStringConverter << num; 
    return toStringConverter.str(); 
} 

請勿使用全局變量。

+1

哇!它爲我工作。謝謝。我不明白爲什麼使用全局變量造成它。 –