将标准输出写入字符串变量
Write stdout into a string variable
我在Linux(Ubuntu 12.04)平台上用C++编写了一个程序,每秒将我所需的输出打印到标准输出中。这意味着,10 秒后,我在标准输出中有 100 行(每秒每个标准输出是 2 行报告)。
这是我应用的模拟格式,我无法更改任何变量或方法将输出写入变量而不是标准输出。
我将把这个输出保存到字符串变量而不是标准输出中。C++语言怎么可能?
你可以为此使用字符串流。假设您的原始日志记录函数如下所示:
void log(std::ostream & o, std::string msg)
{
o << msg << std::endl;
}
int main()
{
// ...
log(std::cout, "Ping");
}
将其更改为:
#include <sstream>
int main()
{
std::ostringstream oss;
// ...
log(oss, "Ping");
}
如果这不是一个选项,您可以破坏全局std::cout
的输出缓冲区:
std::streambuf * sbuf = std::cout.rdbuf(); // save original
std::ostringstream oss;
std::cout.rdbuf(oss.rdbuf()); // redirect to "oss"
// ...
std::cout.rdbuf(sbuf); // restore original
在任一情况下,oss.str()
都包含字符串数据。
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 从字符串变量中逐字符读取单词
- 对函数 PlaySound 使用字符串变量
- C++中的字符串变量
- 字符串变量,比如说"字符串str",可以直接复制到数组中吗?
- 我可以用字符串变量而不是它的名字创建容器吗? C++
- 字符串变量的大小
- 为什么我的字符串变量没有打印完整的字符串?
- 字符串变量未更新 c++
- 如何使用 setfill 和 setw 在字符串变量中存储十六进制值
- 在.cpp文件之间传递全局字符串变量?
- 字符串变量顺序
- 为什么可以将整数分配给字符串变量?
- 在qt创建器中调试时如何访问字符串变量的完整值?
- 将字符串变量分配给无符号字符变量
- 在 c++ 中使用字符串变量选择静态类结构,而不带对象
- C++我应该用什么来保存格式化为字符串变量(如sprintf())的文件
- 我有一个字符串变量单词= "APA"
- 将字符串变量从 bash 脚本传递到根宏