我正在尝试找到一个可以让我抓住这个片段的解决方案:
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”,其中“年龄”应该是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 "))
提前谢谢你:)
答案 0 :(得分:5)
有两个问题
在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;
答案 1 :(得分:3)
你不能像这样连接int和字符串。
尝试在std::to_string(myInt)
中包装一个int,然后在其中添加一个字符串,这会强制它成为字符串+字符串连接。
参考: http://en.cppreference.com/w/cpp/string/basic_string/to_string
答案 2 :(得分:1)
您需要将数字转换为字符串,如下所示:
cout << (etage == 0 ? "stuen " : std::to_string(etage) + " etage");
std :: to_string()可帮助您转换int' to
字符串。
如果它只是一个连接问题,你也可以这样做:
etage == 0 ? cout << "stuen " : cout << etage <<" etage";