- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个单元测试,它通过读取函数发送的缓冲区来验证函数:
template <typename Manifold>
void print_manifold(Manifold const& manifold)
try
{
std::cout << "Manifold has " << manifold.N0() << " vertices and "
<< manifold.N1() << " edges and " << manifold.N2() << " faces and "
<< manifold.N3() << " simplices.\n";
// fmt::print(
// "Manifold has {} vertices and {} edges and {} faces and {}
// simplices.\n", manifold.N0(), manifold.N1(), manifold.N2(),
// manifold.N3());
}
catch (...)
{
std::cerr << "print_manifold() went wrong ...\n";
throw;
} // print_manifold
SCENARIO("Printing results", "[utility]")
{
// redirect std::cout
stringstream buffer;
cout.rdbuf(buffer.rdbuf());
GIVEN("A Manifold3")
{
Manifold3 const manifold(640, 4);
WHEN("We want to print statistics on a manifold.")
{
THEN("Statistics are successfully printed.")
{
print_manifold(manifold);
CHECK_THAT(buffer.str(), Catch::Contains("Manifold has"));
}
}
}
fmt::print
生成的输出到
stdout
的输出?
cout
代码并取消注释
fmt
代码时,我得到了由
cout <<
的先前实例产生的缓冲区。
最佳答案
这比{fmt}问题更像是一个C stdio问题,但是您可以按照Redirecting stdout to pipe in C的答案中所述将stdout
重定向到管道并从中读取输出。尽管这不是一个好的单元测试,因为它取决于全局状态,但是您当前的测试也存在相同的问题。
关于c++ - {fmt}等同于cout.rdbuf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59231840/
#include #include #include using namespace std; int main() { ofstream fout("test.txt"); f
我想报告一个错误的解决方案在 Mac OS X El Capitan 版本 10.11.2 中安装 OpenFOAM 3.0.1 时得到错误是: "error: member reference ty
有没有人有一个例子来说明如何重新定义 C++ 内置的 clog,而不是有一个新的关联 rdbuf(),它被处理为原始 clog.rdbuf() 和 ofstream 对象的 rdbuf() 的三通到磁
使用这段代码,我从文件中读取了一个字符串。 pbuf = infile.rdbuf(); size = pbuf->pubseekoff(0, ios::end, ios::in); pbuf->pu
我试图通过简单地使用 rdbuf() 将两个文件合并为一个文件,但是在合并时,文件的第一行丢失了。代码如下: void mergeFiles(ifstream &file1, ifstream &fi
我有一个单元测试,它通过读取函数发送的缓冲区来验证函数: template void print_manifold(Manifold const& manifold) try { std::co
我正在尝试将文件内容复制到缓冲区。 std::ifstream fp(myFile, std::ios::binary) fp.seekg(0, fp.end); // set cursor at t
在下面的例子中, ifstream myFile; myFile.open("example.txt", ios::binary); cout << myFile.rdbuf() << endl; m
我正在尝试了解 IO 流的结构。 从 cppreference std::basic_stringstream::str 开始: Manages the contents of the underly
使用 rdbuf 将流复制到另一个流是一种众所周知的方法: #include #include int main() { std::ifstream in{"/tmp/foo.txt"};
这是我的简单代码: #include int main() { int foo; std::cin.rdbuf(std::cout.rdbuf()); std::cin>>f
提出以下问题的用户很快就接受了“读取缓冲区”: What does rd stand for in rdstate and rdbuf? 我仍然想知道“读取缓冲区”在“std::ostream”(co
我试试下面的代码: ostringstream oss; streambuf *psbuf, *backup; backup = oss.rdbuf(); psbuf = cout.rdbuf
比方说,我有几个数字的文件 input.txt 1 2 4 51 3 77 现在,我正在尝试执行这个命令: `string filename="input.txt"; ifstream ifs
有一个STL 库函数 streambuf* std::basic_ios::rdbuf (streambuf* sb); 此函数可用于更改与流关联的流缓冲区。如果您使用它,它会返回一个指向先前使用的
此代码的目的是支持通过 ./a.out 2) { in.open(argv[1]); } istream & input = (argc > 2 ? in : cin); string li
我有以下代码,它工作得很好(除了它很慢,但我不太在意)。将 infile 的全部内容写入 outfile 似乎并不直观。 // Returns 1 if failed and 0 if success
ofstream ofs1("file1.dat", ios::out | ios::binary); unsigned char data[64] = {0}; ofs1.write((char*)
是否可以在使用 .rdbuf() 函数将缓冲区推送到另一个流 stream 后重用字符串流 s? 我重建了环境: http://ideone.com/JoPJ1E #include using na
我正在尝试使用 pubsetbuf 方法修改 stringstream 对象的 stringbuffer 而不必复制字符串,但它不起作用。我正在关注 http://www.cplusplus.com/
我是一名优秀的程序员,十分优秀!