在尝试将整数值插入字符串时,我以为当我找到std::to_string时,我的祈祷得到了回应,但由于某种原因,每当我实际尝试使用它时,Visual Studio都会抱怨它的多义性。下面是我的函数的当前化身:
string get_time_remaining (int elapsed)
{
string remaining;
string temp_string;
int time_remaining = TimeLimit - elapsed;
int temp_int;
temp_int = int(time_remaining / 3600);
if(temp_int == 0)
remaining = "00 : ";
else
{
temp_string = std::to_string(temp_int); // Here!
remaining = temp_string + " : ";
}
temp_int = time_remaining % 60 + 1;
if(temp_int < 10)
remaining = remaining + "0";
temp_string = std::to_string(temp_int);
remaining = remaining + temp_string;
return remaining;
}我已经尝试在调用to_string的过程中强制转换temp_int,正如您所看到的,我甚至尝试了强制转换应该是整数除法的结果,但无论我做什么,VS都会向我显示以下内容:
d:\my programs\powerplay\powerplay\powerplay.cpp(1285): error C2668: 'std::to_string' : ambiguous call to overloaded function
1> d:\microsoft visual studio 10.0\vc\include\string(688): could be 'std::string std::to_string(long double)'
1> d:\microsoft visual studio 10.0\vc\include\string(680): or 'std::string std::to_string(_ULonglong)'
1> d:\microsoft visual studio 10.0\vc\include\string(672): or 'std::string std::to_string(_Longlong)'任何帮助都将不胜感激。
发布于 2013-01-31 11:29:59
MSVC11缺少适用于std::to_string的适当重载,因此您必须对unsigned long long或long long执行static_cast
请注意,此错误已在2012年11月的CTP中修复。你可以得到here。
发布于 2013-01-31 11:32:29
temp_int是一个int值,而Visual Studio似乎只检测接收double、long long或unsigned long long值的重载,所以它不知道使用哪个重载,从而产生了多义性(尽管将整数转换为长值似乎很直观)
要么将temp_int声明为long long,要么在调用函数时将其强制转换
https://stackoverflow.com/questions/14617950
复制相似问题