c++ if语句具有复合值

标签 c++

我正在尝试找到一个解决方案,让我可以截取这个片段:

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/

相关文章:

C++ 64 位,未找到变量

c++ - 如何将双引号放入字符串文字中?

c++ - 大对象线程间通信的最佳实践

c++ - 为什么复制构造函数被调用了 25 次,而插入循环只迭代了 10 次?

C++将指针常量作为参数从main传递给方法

c++ - 使用函数从 C++ 中的数组中删除 2 个或更多元素的序列?

c++ - 从作为指针的类成员获取值

c++ - 具有可变返回类型的函数

c++ - Qt 用户自定义热键

c++ - 计算 std::string 的分配内存(以及 std::vector 中字符串的使用)