首页 > 解决方案 > 如何在三元运算中将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 的数字,如何快速将该整数转换为字符串?(最好在同一行)

标签: c++stringcastingtype-conversionconditional-operator

解决方案


如果你坚持使用条件运算符,你可以这样写:

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.


推荐阅读