使用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
相关产品推荐
相关产品推荐

