我有一个这样的声明,意味着输出函数返回的内容。
std::cout<<"result: " << calculateAvg(someArray, size) << std::endl;
然而,该函数在返回值之前输出内容。有没有办法打印出该行返回的内容,而不是打印出函数打印的所有内容?
答案 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
}