2017-07-29 37 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

哇!它为我工作。谢谢。我不明白为什么使用全局变量造成它。 –