看到下面的代码,debug和show convert在iPhone模拟器和设备(4S)上都成功了,但我不知道它是如何工作的?见http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/,boost :: int64_t没有重载函数。使用std :: stringstream将boost :: int64_t大数转换为字符串。
如果我使用此函数来转换任何任意boost :: int64_t类型,有什么风险?提前致谢。
std::stringstream mySS;
boost::int64_t large = 4294967296889977;
mySS<<large;
std::string str = mySS.str();
当然,这种语言并没有与它自己的操作符来提升类型。这就是为什么我们可以超载他们。 – chris
它工作的原因是'boost:int64_t'实际上是一个内建类型的typedef(通常是在cstdint或类似的东西中定义的'std :: int64_t'),所以它最终可能会和'long (或类似的,取决于平台),当然还有'stringstream :: operator <<'的重载。 – jogojapan
@jogojapan,呵呵,我想这很有道理,但我不知道。即使没有提升,仍然可能使运营商超负荷运转。另外,cplusplus列表不完整。在那里没有提及的“long long”和“unsigned long long”有重载。 – chris