C++ C++;输出顺序

C++ C++;输出顺序,c++,cout,C++,Cout,我有一个这样的语句,用于输出函数返回的内容 std::cout<<"result: " << calculateAvg(someArray, size) << std::endl; std::cout 有没有一种方法可以让我打印出该行返回的内容,而不是在函数打印的所有内容之后 不可以。函数必须先运行,然后才能返回内容。这意味着函数输出的任何输出都将先于函数返回值的输出 有没有一种方法可以让我打印出该行返回的内容,而不是在函数打印的所有内容之后 不可以。函数必

我有一个这样的语句,用于输出函数返回的内容

std::cout<<"result: " << calculateAvg(someArray, size) << std::endl;
std::cout
有没有一种方法可以让我打印出该行返回的内容,而不是在函数打印的所有内容之后

不可以。函数必须先运行,然后才能返回内容。这意味着函数输出的任何输出都将先于函数返回值的输出

有没有一种方法可以让我打印出该行返回的内容,而不是在函数打印的所有内容之后


不可以。函数必须先运行,然后才能返回内容。这意味着函数输出的任何输出都将先于函数返回值的输出。

您可以将
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
}
#包括
#包括
#包括
std::string myFunc(){

std::cout您可以重定向
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
}
#包括
#包括
#包括
std::string myFunc(){

std::cout除非重写函数。将结果赋给临时变量以确保函数的任何输出在“result:”之前。您还应该意识到,
除非重写函数,否则不能。将结果赋给临时变量以确保函数的任何输出在“result:”之前您还应该意识到,
关于OP的意图。@πάνταῥεῖ 我从阅读问题中得出的结论是OP不想更改
cout
行。但是,如果他同意更改呼叫站点,那么他可以重定向
cout
,以了解OP的意图。@πάνταῥεῖ 我从阅读问题中得出的结论是OP不想更改
cout
行。但是是的,如果他同意更改呼叫站点,那么他可以重定向
cout
请给那个答案多一点(代码)肉。我犹豫了一下是否将这个链接标记为第一位的重复。给那个答案多一点(代码)肉请,我犹豫是否标记此链接为重复在第一位。