C IF具有复合值的语句

c++ if statement with compound value

本文关键字:语句 复合 IF      更新时间:2023-10-16

我正在尝试找到一个可以让我进行此的解决方案:

cout << antalVaerelser << ("-vx91r, ") 
<< (altan == true ? ("med altan, ") : ("uden altan, "));
if (etage == 0) {
cout << ("stuen ");
}
else {
cout << etage << (" etage ");
}
cout << areal << (" m2") << endl;

并将其转换为具有更像这样的线:

cout << antalVaerelser << ("-vx91r, ")
<< (altan == true ? ("med altan, ") : ("uden altan, "))
<< (etage==0?("stuen ") : etage + (" etage "))
<< areal << (" m2")
<< endl;

但是,这不起作用,因为某些输出似乎被"食用" - 它将显示为" 4 -Vær,Med Altan,Age,Age,101M2",其中"年龄"应该是eTage的价值(值= 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 << ("-vx91r, ")
    << (altan == true ? "med altan, " : "uden altan, ")
    << (etage==0 ? std::string("stuen ") : std::to_string(etage) + " etage ")
    << areal << (" m2")
    << endl;

在C 中14更好:

cout << antalVaerelser << ("-vx91r, ")
    << (altan == true ? "med altan, " : "uden altan, ")
    << (etage==0 ? "stuen "s : std::to_string(etage) + " etage "s)
    << areal << (" m2"s)
    << endl;

您不能像这样连接int和字符串。

尝试将int包装在 std::to_string(myInt)中,然后在其中添加一个字符串,迫使它是字符串 字符串串联。

参考:http://en.cppreference.com/w/cpp/string/basic_string/to_string

您需要将数字转换为字符串:

cout << (etage == 0 ? "stuen " : std::to_string(etage) + " etage");

std :: to_string((帮助您转换int' to String`。

如果这只是串联问题,也可以这样做:

etage == 0 ? cout << "stuen " : cout << etage <<" etage";