我需要输出一个数字,除非它是0,其中输出必须是“nan” 我做不到
int x;
...
cout << (!x ? "nan" : x);
因为三元表达式中的类型不匹配。我能做到
void f(ostream& o, int x)
{
if (!x) o << x;
else o << "nan";
}
对我来说看起来有点难看。有更好的解决方案吗? 像
这样的东西cout << nanify(x);
可能?
答案 0 :(得分:3)
我并不是说我会这样做,但是可以安装自定义std::num_get<char>
方面,以便在nan
为0
时打印#include <algorithm>
#include <iostream>
#include <locale>
class zero_num_put
: public std::num_put<char> {
iter_type do_put(iter_type out, std::ios_base& str, char_type fill, long v) const {
if (v == 0) {
static char nan[] = "nan";
return std::copy(nan, nan + 3, out);
}
return std::num_put<char>::do_put(out, str, fill, v);
}
};
int main()
{
std::locale loc(std::locale(), new zero_num_put);
std::cout.imbue(loc);
std::cout << 0 << " " << 17 << "\n";
}
印刷:
app.showDialog('viewmodels/task/main', "222").then(function (action, model) {
if (action == "save") {
// save content from dialog
}
}
答案 1 :(得分:1)
为什么不使用它:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 2 :(得分:0)
你可以沿着这些方向使用:
std::string nanify(const int x) {
if (x) { /* If not 0, return 'x' as a string */
return std::to_string(x);
}
/* Else, return "nan" string */
return "nan";
}
std::cout << nanify(0) << ' ' << nanify(15); /* nan 15 */