나는 길이가 stringstream
인데, 얼마나 많은 블록이 있는지를 블록으로 계산하고 있다고 생각한다. 블록 길이는 '\t' '\s' '\n'
으로 나뉜다.stringstream의 길이를 계산하는 tellp()의 원리는 무엇입니까?
예 : 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
I는 임의의은 s_double의 출력이 너무 변경된 범위를 변경 한 후.
double random = rand()/(double) RAND_MAX *9;
출력 :
10
42
귀하의 질문에 정확히 무엇이 있습니까? 한 곳에서'index'를 사용하고 다른 곳에서'random'을 사용하고 길이가 같을 것으로 예상하십니까? – Ajay
''s_double'의 내용을 출력하려면'cout << s_double.str() << '\ n';'을 추가하십시오. – Galik
@Ajay 5 개의 숫자와 하나의'int' 배열을 만들고 싶습니다. 하나의'double' 배열. 두 문자열의 길이는 동일합니다. 5.이 5 개의 int와 5 개의 double 번호를 문자열 스트림에 입력 한 후 ** 문자열 스트림에 대한 ** 길이가 변경되었습니다. ** 제외 된 사람의 길이는 모두 10 ** **이어야합니다. 왜냐하면 나는 단지 10 개의 문자열을'stringstream','int' /'double' 스트림 5 개, 5 '\ t'를 입력한다고 생각하기 때문입니다. –