我正在尝试从函数返回一个printf语句,但它给了我一个编译错误。
string calculation(int choice)
{
float input1, input2;
if(choice == 1)
{
cout << "You have chosen Addition.\n";
cout << "Enter first number: ";
cin >> input1;
cout << "Enter second number: ";
cin >> input2;
float add = addition(input1, input2);
return printf("%.1f + %.1f = %.1f\n", input1, input2, add);
}
}
答案 0 :(得分:2)
printf()
是一个int方法,因此你不能返回它,因为它给出了一个int值。它将返回写入stdout
的字符数。将您的方法更改为int calculation(int choice)
或将您的语句格式化为字符串并返回该字符串,同时在调用此方法的方法中将其打印出来。
答案 1 :(得分:2)
printf()
只是根据格式字符串格式化输出并将其发送到标准输出(stdout
)。无法拦截此输出并将其作为std::string
返回。您可以使用std::string
或snprintf()
:
std::ostringstream
char buffer[100];
snprintf(buffer, sizeof(buffer), "%.1f + %.1f = %.1f\n", input1, input2, add);
return buffer;
或
std::ostringstream out;
out << std::fixed << std::setprecision(1)
<< input1 << " + " << input2 << " = " << add << '\n';
return out.str();
答案 2 :(得分:0)
printf
返回int而不是字符串。只需在谷歌搜索c ++文档。看here