我的程序发生了一些奇怪的事情.我目前在我的程序中使用了很多线程,并且在这里粘贴所有内容是不可行的.
不过这是我的问题:
int value = 1000;
std::cout << value << std::endl;
//output: 3e8
Run Code Online (Sandbox Code Playgroud)
知道为什么我的输出3e8?
是什么命令将其修复回打印十进制值?
提前致谢!:)
在您的程序中的某个地方进行如下调用:
std::cout << std::hex << value;
Run Code Online (Sandbox Code Playgroud)
已经用过.要将输出恢复为正常(十进制),请使用:
std::cout << std::dec;
Run Code Online (Sandbox Code Playgroud)
这是一个相关的链接,可以在std :: cout上输出数字的不同方式.
另外,正如下面的评论中所指出的,安全地修改cout标志的标准方法如下:
ios::fmtflags cout_flag_backup(cout.flags()); // store the current cout flags
cout.flags ( ios::hex ); // change the flags to what you want
cout.flags(cout_flag_backup); // restore cout to its original state
Run Code Online (Sandbox Code Playgroud)
如下面的评论中所述,明智地指出在使用IO Streams时,最好在线程和流之间进行某种形式的同步,即确保没有两个线程可以使用相同的一次流.
这样做可能也会集中你的流调用,这意味着将来调试这样的东西要容易得多.
这是一个可以帮助你的SO问题