gpt4 book ai didi

c++ - tellp()计算stringstream长度的原理是什么?

转载 作者:行者123 更新时间:2023-11-28 05:38:34 25 4
gpt4 key购买 nike

我认为stringstream的长度是由 block 计算的。这意味着它有多少 block ,它有多长。 block 被'\t''\s分割' '\n'.

例如,stringstream = '23\t45\t5.677\t',它的长度应该是6,应该计算分隔符。

当参数类型都是int时,我就可以验证我的想法。这是我的代码。

我想知道 s_double.tellp() 不是 10

#include<iostream>
#include<sstream>
#include<cstdlib>

using namespace std;
int main()
{
stringstream s_int;
stringstream s_double;
srand((unsinged)time(NULL));

for(int index = 0;index<5;index++)
{
double random = rand() / (double) RAND_MAX * 5;
s_int<<index<<'\t';
s_double<<random<<'\t';
}

cout<<s_int.tellp()<<'\n';
cout<<s_double.tellp()<<'\n';

exit(0);
}

输出:

10
40

在我改变random的range之后,s_double的输出也改变了。

double  random = rand() / (double) RAND_MAX *9;

输出:

10
42

最佳答案

最简单但不是更快的方法是:

auto nLength = strm.str().length();

关于 s_double 位置 - 通过在调试器中检查此流的内容或打印它很容易回答您的问题。您会看到 0.554212545 的 double 可能是“0.554213”,1 的 double 可能是“1”,因此不同的 doubles 的字符串长度完全不同。

关于c++ - tellp()计算stringstream长度的原理是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37649841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com