我可以从函数返回printf语句吗? C ++

时间:2013-12-24 21:51:32

标签: c++

我正在尝试从函数返回一个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);
    }
}

3 个答案:

答案 0 :(得分:2)

printf()是一个int方法,因此你不能返回它,因为它给出了一个int值。它将返回写入stdout的字符数。将您的方法更改为int calculation(int choice)或将您的语句格式化为字符串并返回该字符串,同时在调用此方法的方法中将其打印出来。

答案 1 :(得分:2)

printf()只是根据格式字符串格式化输出并将其发送到标准输出(stdout)。无法拦截此输出并将其作为std::string返回。您可以使用std::stringsnprintf()

构建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