c++ - 如何在三元运算中将int转换为字符串
问题描述
尝试使用整数和字符串进行三元运算时,例如:
for (int num = 0; num < 100; num++) {
cout << (i % 10 == 0) ? "Divisible by 10" : num;
}
您最终会遇到以下异常
E0042:操作数类型不兼容(“const char*”和“int”)
如果你试图通过这样做来强制num
转换,你最终会遇到访问冲突。如果您这样做,您将获得与该值对应的 ASCII 字符。const char*
(const char*)num
(const char*)num&
对于大于 10 的数字,如何快速将该整数转换为字符串?(最好在同一行)
解决方案
如果你坚持使用条件运算符,你可以这样写:
for (int num = 0; num < 100; num++) {
(num%10==0) ? std::cout << "Divisible by 10" : std::cout << num;
}
如果您想保留自己的值,则需要将值转换为一些兼容的类型。没有办法解决这个问题。条件运算符不是if-else
语句的等效替代品,后者通常更清晰:
for (int num = 0; num < 100; num++) {
if (num%10==0) { std::cout << "Divisible by 10"; }
else { std::cout << num; }
}
对于大于 10 的数字,如何快速将该整数转换为字符串?(最好在同一行)
std::to_string
可以将数字转换为字符串。
PS:为了说明一个if-else
不能使用an而条件运算符实际上有用的例子,考虑一个引用的初始化。你不能写:
int x = 0;
int y = 0;
int& ref; // nope, error
if (condition) ref = x;
else ref = y;
但你可以写:
int& ref = (condition) ? x : y;
在其他情况下,条件运算符很有用。与if-else
.
推荐阅读
- c# - 如何使用 C# 通过 AWS lambda 处理 S3 事件上的文件
- algorithm - 路径表示算法
- php - 在 php switch case 中使用多个 OR。如何在开关盒中插入多个条件?
- python - librosa 中的 audioread.exceptions.NoBackendError
- python - 无法打开prototxt
- c# - ASP.NET MVC3 项目,ajax 回调适用于“ contentType: 'text/json; charset=utf-8' ” 但“ contentType: 'application/json; charset=utf-8' ”
- database - 为什么在 curl 中引用密码变量会导致授权失败?(重击)
- java - 动态阻止已到达蜜罐的 IP 地址
- javascript - ng-focus does not work with iframe in AngularJS
- swift - 超大几何阅读器