如何在三元运算中将 int 转换为 string

How to convert int to string in a ternary operation

尝试使用整数和字符串进行三元运算时,例如:

for (int num = 0; num < 100; num++) {
    cout << (i % 10 == 0) ? "Divisible by 10" : num;
}

您最终遇到以下异常

E0042: operand types are incompatible ("const char*" and "int")

如果您尝试通过执行 (const char*)numnum 转换为 const char*,您最终会遇到访问冲突。 如果您改为执行 (const char*)num&,则会获得与该值对应的 ASCII 字符。

对于大于 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; }
}

For numbers greater than 10 how can you quickly cast that integer into a string? (Preferably in the same line)

std::to_string可以将数字转换成字符串。


PS:为了说明无法使用 if-else 而条件运算符实际有用的示例,请考虑引用的初始化。你不能写:

int x = 0;
int y = 0;
int& ref;    // nope, error
if (condition) ref = x;   
else ref = y;

但你可以这样写:

int& ref = (condition) ? x : y;

条件运算符在其他情况下也很有用。与 if-else.

相比,它的目的不仅仅是节省一行代码

要在同一行中执行此操作,请尝试:

for (int num = 0; num < 100; num++) {
    cout << (num % 10 == 0 ? "Divisible by 10" : to_string(num)) << endl;
}