如何在三元运算中将 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*)num
将 num
转换为 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;
}
尝试使用整数和字符串进行三元运算时,例如:
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*)num
将 num
转换为 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;
}