如果 C++ 中一个变量为空,是否有 shorthand 方法打印不同的变量?
Is there a shorthand way to print a different variable if one variable is empty in C++?
我正在尝试用 C++ 编写一个缩小的 FizzBuzz 程序,因为我刚刚在学习它。我想知道是否有一种 shorthand 的方式来表达“如果这个字符串存在,return 这个字符串,否则,return 这个下一部分”
在 JavaScript 中,使用 ||
运算符的工作方式与我想的一样:
function fizzbuzz() {
const maxNum = 20; // Simplified down to 20 just for example
for (let i = 1; i <= maxNum; i++) {
let output = "";
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
console.log(output || i); // If the output has something, print it, otherwise print the number
}
}
fizzbuzz();
当我在 C++ 中尝试这个时,
#include <iostream>
#include <string>
using namespace std;
int main() {
int maxNum = 100;
string output;
for (int i = 1; i <= maxNum; i++) {
output = "";
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
cout << output || i << endl; // I've also tried the "or" operator instead of "||"
}
return 0;
}
我收到这个错误:
main.cpp:12:32: error: reference to overloaded function could not be resolved; did you mean to call it?
cout << output || i << endl;
^~~~
我知道你可以在 cout
之前说这个(并更改 cout 行):
if (output == "") output += to_string(i);
但我的问题是在 C++ 中是否有 shorthand 方法来执行此操作,就像在 JavaScript 中一样,或者我是否必须有类似于 if
的方法以上声明?
在 C++ 中,您可以只使用三元运算符。
三元运算符的工作方式如下(与JavaScript中的三元非常相似):
condition ? "truthy-return" : "falsey-return"
^ A boolean ^ what to return ^ what to return
condition if the condition if the condition
is truthy is falsey
那个三元示例等同于此(假设在一个 return 是一个字符串的函数中):
if (condition) {
return "truthy-return";
} else {
return "falsey-return";
}
C++ 确实有它的怪癖,因为它是一种静态类型的语言:
std::string
的值为 ""
(空字符串)不被视为 false,布尔值。通过stringName.length()
求字符串长度,如果长度为0,则return为0。
:
两边的return类型必须相同,所以必须将i
转成字符串std::to_string(i)
- 最后,这个三元运算符必须在它自己的括号内,像这样:
(output.length() ? output : to_string(i))
代码:
#include <iostream>
#include <string>
using namespace std;
int main() {
int maxNum = 100;
string output;
for (int i = 1; i <= maxNum; i++) {
output = "";
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
cout << (output.length() ? output : to_string(i)) << endl;
}
return 0;
}
我正在尝试用 C++ 编写一个缩小的 FizzBuzz 程序,因为我刚刚在学习它。我想知道是否有一种 shorthand 的方式来表达“如果这个字符串存在,return 这个字符串,否则,return 这个下一部分”
在 JavaScript 中,使用 ||
运算符的工作方式与我想的一样:
function fizzbuzz() {
const maxNum = 20; // Simplified down to 20 just for example
for (let i = 1; i <= maxNum; i++) {
let output = "";
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
console.log(output || i); // If the output has something, print it, otherwise print the number
}
}
fizzbuzz();
当我在 C++ 中尝试这个时,
#include <iostream>
#include <string>
using namespace std;
int main() {
int maxNum = 100;
string output;
for (int i = 1; i <= maxNum; i++) {
output = "";
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
cout << output || i << endl; // I've also tried the "or" operator instead of "||"
}
return 0;
}
我收到这个错误:
main.cpp:12:32: error: reference to overloaded function could not be resolved; did you mean to call it?
cout << output || i << endl;
^~~~
我知道你可以在 cout
之前说这个(并更改 cout 行):
if (output == "") output += to_string(i);
但我的问题是在 C++ 中是否有 shorthand 方法来执行此操作,就像在 JavaScript 中一样,或者我是否必须有类似于 if
的方法以上声明?
在 C++ 中,您可以只使用三元运算符。
三元运算符的工作方式如下(与JavaScript中的三元非常相似):
condition ? "truthy-return" : "falsey-return"
^ A boolean ^ what to return ^ what to return
condition if the condition if the condition
is truthy is falsey
那个三元示例等同于此(假设在一个 return 是一个字符串的函数中):
if (condition) {
return "truthy-return";
} else {
return "falsey-return";
}
C++ 确实有它的怪癖,因为它是一种静态类型的语言:
std::string
的值为""
(空字符串)不被视为 false,布尔值。通过stringName.length()
求字符串长度,如果长度为0,则return为0。:
两边的return类型必须相同,所以必须将i
转成字符串std::to_string(i)
- 最后,这个三元运算符必须在它自己的括号内,像这样:
(output.length() ? output : to_string(i))
代码:
#include <iostream>
#include <string>
using namespace std;
int main() {
int maxNum = 100;
string output;
for (int i = 1; i <= maxNum; i++) {
output = "";
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
cout << (output.length() ? output : to_string(i)) << endl;
}
return 0;
}