C++输出顺序

C++ Order of Output

本文关键字:顺序 输出 C++      更新时间:2023-10-16

我有这样的语句,旨在输出函数返回的内容。

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

但是,该函数在返回值之前输出事物本身。有没有办法让我打印出该行返回的内容,而不是在函数打印的所有内容之后?

有没有办法让我打印出该行返回的内容,而不是在函数打印的所有内容之后?

不。 该函数必须先运行,然后才能返回某些内容。 这意味着函数输出的任何输出都将出现在函数返回值的输出之前。

您可以将std::cout重定向到缓冲区(请参阅这篇文章),调用该函数,重定向回来,打印结果,然后打印缓冲区:

#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
}