2016-05-19 56 views
1

我越来越绝望。在Windows 7中使用代码::块,我已经安装了约的MinGW/TDM-GCC的半打的变化,但我不能让to_string我INT转换为字符串,例如:C++ - to_string不能跨多个编译器(MinGW,MinGW64,TDM GCC)在Windows的Code :: Blocks中工作

std::cout << std::to_string(1) << ' - one' << std::endl; 

输出1544173669

我见过关于to_string在早期版本的MinGW中不能工作的各种错误报告(从v4.7到4.9之前的任何地方),但我试过最新版本无济于事。我已按照these instructions安装最新的TDM-GCC,并适当更改工具链和调试器设置。

我所要求的是一些解释和解决方案,为什么这不起作用。我可以根据需要提供更多信息。

回答

3

实际上,它正确地打印为你,再加上事业,你的多字符常量(其定义实现) ...

std::cout << std::to_string(1) << ' - one' << std::endl; 

使用双引号来表示一个字符串,你想也许写的是:

std::cout << std::to_string(1) << " - one" << std::endl; 
+1

这里没有UB。 ''one''是实现定义的,不需要给出警告。 –

+1

@ M.M,Ouch,你是对的。没有UB。纠正! ...关于警告,对编译器发出警告或允许您明确禁止它的用户更安全。例如,像他们(gcc和Clang)对“if(x = 5)”这样的表达式的处理方式一样;被'if((x = 5))'所抑制。有几次,我通过这样的警告节省了数小时调试细微的错误。对于实现定义的行为 - 如果我们对可移植的C++是“迂腐”的... ...因为,它更多的是一个有争议的问题,因为它不是一个授权.... – WhiZTiM

2

我假设你的意思是“ - 一个”。

''仅适用于单个字符。