我正在尝试找到一个解决方案,让我可以截取这个片段:
cout << antalVaerelser << ("-v\x91r, ")
<< (altan == true ? ("med altan, ") : ("uden altan, "));
if (etage == 0) {
cout << ("stuen ");
}
else {
cout << etage << (" etage ");
}
cout << areal << (" m2") << endl;
并稍微将其转换为更像这样的一行:
cout << antalVaerelser << ("-v\x91r, ")
<< (altan == true ? ("med altan, ") : ("uden altan, "))
<< (etage==0?("stuen ") : etage + (" etage "))
<< areal << (" m2")
<< endl;
但是这不起作用,因为某些输出似乎被“吃掉了”——它会显示为“4-vær, med altan, age, 101m2”,其中“age”应该是 etage 的值(value =1-4) 后跟字符串“etage,”
这也行,但似乎真的太过分了:
(etage == 0 ? ("stuen ") : etage == 1 ? ("1 etage ") : etage == 2 ? ("2 etage ") : etage == 3 ? ("3 etage ") : ("4 etage "))
所以问题是:我如何(如果可能的话)像这样工作?:
(etage==0?("stuen ") : etage + (" etage "))
提前谢谢你:)
最佳答案
有两个问题
- 三元运算符必须返回相同类型的值
- 添加整数和字符串文字并没有像您期望的那样工作
在 C++11 中实现
cout << antalVaerelser << ("-v\x91r, ")
<< (altan == true ? "med altan, " : "uden altan, ")
<< (etage==0 ? std::string("stuen ") : std::to_string(etage) + " etage ")
<< areal << (" m2")
<< endl;
在 C++14 中更好一些:
cout << antalVaerelser << ("-v\x91r, ")
<< (altan == true ? "med altan, " : "uden altan, ")
<< (etage==0 ? "stuen "s : std::to_string(etage) + " etage "s)
<< areal << (" m2"s)
<< endl;
关于c++ if语句具有复合值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43695492/