C ++输出顺序

时间:2016-01-19 21:05:28

标签: c++ cout

我有一个这样的声明,意味着输出函数返回的内容。

std::cout<<"result: " << calculateAvg(someArray, size) << std::endl;

然而,该函数在返回值之前输出内容。有没有办法打印出该行返回的内容,而不是打印出函数打印的所有内容?

2 个答案:

答案 0 :(得分:3)

  

我有办法打印出该行返回的内容,而不是打印出函数打印的所有内容吗?

没有。该函数必须先运行才能返回一些东西。这意味着功能输出的任何输出将在功能输出之前出现。返回值。

答案 1 :(得分:3)

您可以将std::cout重定向到缓冲区(请参阅this post),调用该函数,重定向,打印结果然后打印缓冲区:

#include <iostream>
#include <sstream>
#include <string>

std::string myFunc() {
    std::cout << "print inside myFunc" << std::endl;
    return "string returned from myFunc";
}

int main() {
    std::stringstream print_inside;
    std::streambuf * old = std::cout.rdbuf(print_inside.rdbuf());
    std::string returned_string = myFunc();
    std::cout.rdbuf(old);

    std::cout << returned_string << std::endl;
    std::cout << print_inside.str() << std::flush; //endl already there
}