有没有一种简单的方法可以获取 C++ 中打印的字符数?

2023-11-25

printf(...)返回输出到控制台的字符数,我发现这对于设计某些程序非常有帮助。所以,我想知道 C++ 中是否有类似的功能,因为 cout


您可以关联自己的streambuf to cout来计算字符数。

这是包装所有内容的类:

class CCountChars {
public:
    CCountChars(ostream &s1) : m_s1(s1), m_buf(s1.rdbuf()), m_s1OrigBuf(s1.rdbuf(&m_buf)) {}
    ~CCountChars() { m_s1.rdbuf(m_s1OrigBuf); m_s1 << endl << "output " << m_buf.GetCount() << " chars" << endl; }

private:
    CCountChars &operator =(CCountChars &rhs) = delete;

    class CCountCharsBuf : public streambuf {
    public:
        CCountCharsBuf(streambuf* sb1) : m_sb1(sb1) {}
        size_t GetCount() const { return m_count; }

    protected:
        virtual int_type overflow(int_type c) {
            if (streambuf::traits_type::eq_int_type(c, streambuf::traits_type::eof()))
                return c;
            else {
                ++m_count;
                return m_sb1->sputc((streambuf::char_type)c);
            }
        }
        virtual int sync() {
            return m_sb1->pubsync();
        }

        streambuf *m_sb1;
        size_t m_count = 0;
    };

    ostream &m_s1;
    CCountCharsBuf m_buf;
    streambuf * const m_s1OrigBuf;
};

你这样使用它:

{
    CCountChars c(cout);
    cout << "bla" << 3 << endl;
}

当对象实例存在时,它会计算 cout 输出的所有字符。

请记住,这只会计算通过输出的字符cout,不是打印的字符printf.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有一种简单的方法可以获取 C++ 中打印的字符数? 的相关文章

  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • WinForms | C# |在文本框中间自动完成?

    我有一个自动完成功能的文本框 如下所示 txtName AutoCompleteMode AutoCompleteMode Suggest txtName AutoCompleteSource AutoCompleteSource Cust
  • Ascii 文件中的 Python BOM 错误

    我在使用 Python 2 6 时遇到了一个奇怪且烦人的问题 我正在尝试在我的嵌入式 Linux ARM 板上运行此文件 以及其他文件 http svn tuxisalive com software suite v3 smart core
  • python multiprocessing.Pool杀死*特定*长时间运行或挂起的进程

    我需要执行许多并行数据库连接和查询的池 我想使用 multiprocessing Pool 或并发 futures ProcessPoolExecutor Python 2 7 5 在某些情况下 查询请求花费太长时间或永远无法完成 挂起 僵
  • Java中如何对URL进行编码以避免特殊字符? [复制]

    这个问题在这里已经有答案了 我需要java代码来编码URL以避免特殊字符 例如空格和 和 等 URL 构造很棘手 因为 URL 的不同部分对于允许使用的字符有不同的规则 例如 加号在 URL 的查询部分中保留 因为它代表空格 但在 URL
  • 从 wav 文件读取样本

    我正在尝试用 html5 制作一个网页 它将 wav 文件中的示例数据存储在数组中 有没有办法用javascript获取样本数据 我正在使用文件输入来选择 wav 文件 在 javascript 中我已经添加了 document getEl
  • 使用 git 有效地重写(rebase -i)大量历史记录

    我有一个 git 存储库 最新版本中有大约 3500 个提交和 30 000 个不同的文件 它代表了多人大约 3 年的工作成果 我们已获得将其全部开源的许可 我正在努力发布整个历史记录 而不仅仅是最新版本 为此 我感兴趣的是 回到过去 并在
  • JavaScript 中对象的“内部槽”是什么?

    我试图从一点上理解 ECMAScript 2015 规范 对象的内部槽 但这一段对我来说似乎很不清楚 尤其是这句话 内部槽对应于与对象关联并由各种 ECMAScript 规范算法使用的内部状态 它使用正确的语法吗 有人能用英语解释这个概念吗
  • 在 Windows 7 上,node.js 安装程序失败并显示“CAQuietExec Failed”和 1603 错误代码

    我试图在 Windows 7 上安装 node js 但是 每次我尝试安装时都会出现以下错误 MSI s A0 64 20 01 44 207 Executing op CustomActionSchedule Action Registe
  • 如何在 GitHub Actions CI/CD 中构建 Flutter

    我正在尝试 GitHub Actions 来构建我的 Flutter 应用程序 但我不知道该选择哪个容器映像 是否有可用于 Flutter 的可信容器镜像 我需要进行哪些调整才能在构建步骤中使用 Flutter SDK Run flutte
  • 我可以从 xaml 中过滤集合吗?

    我有一个 wpf mvvm 应用程序 我的视图模型中有一个可观察的集合 public ObservableCollection
  • 如何在表单POST方法中传递jquery datepicker值?

    我在日期表单中有一个输入文本 我使用 JQuery datepicker 来选择日期
  • x86 给定 AH 和 AL 计算 AX?

    我在理解x86汇编中的寄存器时遇到困难 我知道EAX是完整的32位 AX是低16位 然后AH和AL是AX的高8位和低8位 但我正在做一个问题 如果 AL 10 且 AH 10 AX 中的值是多少 我对此的想法是将 10 转换为二进制 101
  • 无法解析的 StackExchange API 响应

    我编写了一个小程序来分析来自 StackExchange API 的个人资料数据 但该 API 向我返回了无法解析 无法读取的数据 收到的数据 使用c 自行下载 u001f b 0 0 0 0 0 u0004 0mRMo 0 f d c u
  • 如何在 3D 中对固定点进行多项式拟合

    我在 3D 空间中有一组 x y z 点和另一个名为charge它表示存储在特定 x y z 坐标中的电荷量 我想对此数据进行加权 按探测器中沉积的电荷量进行加权 这恰好对应于更多电荷的更高权重 以便它通过给定点 顶点 现在 当我在 2D
  • Hibernate 标准 api“选择”

    是否可以使用 hibernate Critiria api 创建 select in 查询 例子 我有两个 1 n 关系的表 公司和部门 select from company c where c id in select company
  • 数组和&array[0]之间的区别

    int array 1 2 3 4 我认为 array只是一个指向 array 0 但怎么会呢sizeof array 知道数组的大小而不仅仅是知道它只是 4 字节数字 尽管在某些上下文中数组的名称确实成为指向其初始成员的指针 例如将数组传
  • PHP 中如何将 pi 计算为指定位数?

    如何在 PHP 中计算 pi 的值 最多 X 个十进制数字 4 位小数 3 141 64位小数 3 141592653589793238462643383279502884197169399375105820974944592 找到 Kon
  • 例外:没有标头提供者! (应用程序 -> Api -> 标头)

    只是不明白为什么我仍然遇到这个缺少标头提供程序的问题 我的 bootstrap ts import enableProdMode provide from angular2 core import bootstrap ELEMENT PRO
  • 如何创建 DST 类型?

    DST 动态大小类型 现在是 Rust 中的一个东西 我有used他们成功地使用了编译器已知的灵活的最后一个成员 例如 u8 然而 我想做的是创建自定义 DST 比如说 struct Known
  • 有没有一种简单的方法可以获取 C++ 中打印的字符数?

    printf 返回输出到控制台的字符数 我发现这对于设计某些程序非常有帮助 所以 我想知道 C 中是否有类似的功能 因为 cout 您可以关联自己的streambuf to cout来计算字符数 这是包装所有内容的类 class CCoun