gpt4 book ai didi

c++ - 如何在 C++ 中并排显示两个函数?

转载 作者:太空狗 更新时间:2023-10-29 22:58:54 26 4
gpt4 key购买 nike

我的代码的输出显示 function1()function2() 之上。有没有一种编码方式可以让输出在 function2() 旁边(如并排显示)显示 function1()

下面是我的代码片段:

#include <iostream>
using namespace std;

void function1()
{
int i;
int array[5] = {5, 5, 5, 5, 5};

cout << " -1-2-3-4-5-" << endl;
cout << " |";
for (i = 0; i < 5; ++i)
cout << array[i] << "|";
cout << endl;
}

void function2()
{
int i;
char array[5] = {'A', 'A', 'A', 'A', 'A'};

cout << " -1-2-3-4-5-" << endl;
cout << " |";
for (i = 0; i < 5; ++i)
cout << array[i] << "|";
cout << endl;
}

int main()
{

function1();
function2();

return 0;
}

最佳答案

这是可能的,但并非完全没有技巧。

我在这里使用的技巧是将输出流 传递给函数,而不是让函数直接打印到std::cout。这允许我传递 std::stringstream到打印到那个的函数。 std::stringstream捕获输出供以后使用,我有一个功能可以一次打印一行,并排打印:

#include <sstream>
#include <iostream>

// output to a generic output stream
// rather than hard-coding std::cout
void function1(std::ostream& os)
{
int i;
int array[5] = { 5, 5, 5, 5, 5 };

os << " -1-2-3-4-5-" << '\n';
os << " |";
for(i = 0; i < 5; ++i)
os << array[i] << "|";
os << '\n';
}

void function2(std::ostream& os)
{
int i;
char array[5] = { 'A', 'A', 'A', 'A', 'A' };

os << " -1-2-3-4-5-" << '\n';
os << " |";
for(i = 0; i < 5; ++i)
os << array[i] << "|";
os << '\n';
}

// read each input stream line by line, printing them side by side
void side_by_side(std::istream& is1, std::istream& is2, std::size_t width)
{
std::string line1;
std::string line2;

while(std::getline(is1, line1))
{
std::string pad;

// ensure we add enough padding to make the distance
// the same regardless of line length
if(line1.size() < width)
pad = std::string(width - line1.size(), ' ');

// get same line from second stream
std::getline(is2, line2);

// print them size by the side the correct distance (pad)
std::cout << line1 << pad << line2 << '\n';
}

// in case second stream has more line than the first
while(std::getline(is2, line2))
{
auto pad = std::string(width, ' ');
std::cout << pad << line2;
}
}

int main()
{
// some stream objects to store the outputs
std::stringstream ss1;
std::stringstream ss2;

// capture output in stream objects
function1(ss1);
function2(ss2);

// print captured output side by side
side_by_side(ss1, ss2, 30);
}

输出:

   -1-2-3-4-5-                   -1-2-3-4-5-
|5|5|5|5|5| |A|A|A|A|A|

关于c++ - 如何在 C++ 中并排显示两个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38893113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com