You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ostream向char数组流写入数据,如何获取已写入字符数?

获取stringstream已写入的字符总数

要获取stringstream中已写入的字符总数,有两种标准且可靠的方法:

  • 利用tellp()方法
    stringstream继承自ostream,tellp()会返回当前输出位置的字节偏移量,这个值就是已写入的字符总数。示例:
#include <sstream>
#include <iostream>

int main() {
    std::stringstream ss;
    ss << "Hello, World!" << 123;
    std::streampos written_count = ss.tellp();
    std::cout << "已写入字符数:" << written_count << '\n';
    return 0;
}

注意:如果之前调用过seekp()修改过输出指针位置,tellp()返回的是当前指针位置,而非总写入长度,此时更适合用第二种方法。

  • 提取内部字符串后获取长度
    通过str()获取stringstream存储的完整字符串,再调用size()得到总字符数:
#include <sstream>
#include <iostream>
#include <string>

int main() {
    std::stringstream ss;
    ss << "Hello, World!" << 123;
    std::size_t written_count = ss.str().size();
    std::cout << "已写入字符数:" << written_count << '\n';
    return 0;
}

这种方法不受指针移动操作影响,总能得到实际存储的总字符数。

废弃的ostrstream::pcount()无需再使用,上述两种标准方法完全可以满足需求。

内容的提问来源于stack exchange,提问作者acupoftea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:06:41