首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

tellp 在空 ostringstream 上的标准行为

在C++中,ostringstream是一个字符串流,用于将数据转换为字符串。tellp()是一个成员函数,用于获取当前的写入位置。在空的ostringstream上调用tellp()时,标准行为是返回一个位置值,表示下一个写入操作将在字符串的开头。

例如:

代码语言:cpp
复制
#include<iostream>
#include <sstream>

int main() {
    std::ostringstream oss;
    std::cout << "Initial tellp position: " << oss.tellp()<< std::endl;

    oss << "Hello, world!";
    std::cout << "After writing, tellp position: " << oss.tellp()<< std::endl;

    return 0;
}

输出:

代码语言:txt
复制
Initial tellp position: 0
After writing, tellp position: 13

在这个例子中,我们首先创建了一个空的ostringstream对象,然后立即调用tellp()函数。在这个空字符串流上调用tellp()返回的位置值为0,表示下一个写入操作将在字符串的开头。接下来,我们向ostringstream对象中写入一段文本,然后再次调用tellp()函数。这次,返回的位置值为13,表示下一个写入操作将在字符串的末尾。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

dotnet 测试 UOS Linux 使用 Process Start 打开文件行为

本文记录我 UOS Linux 系统使用 Process.Start 打开文件行为 使用 UseShellExecute 打开文本文件 我放入了名为 Test.txt 文件,然后使用下面代码尝试打开文件...,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,命令行里面输入以下代码,即可获取到本文代码 git init git remote add origin https://gitee.com...,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,命令行里面输入以下代码,即可获取到本文代码 git init git remote add origin https://gitee.com...,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,命令行里面输入以下代码,即可获取到本文代码 git init git remote add origin https://gitee.com...,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,命令行里面输入以下代码,即可获取到本文代码 git init git remote add origin https://gitee.com

11910

CC++开发基础——IO操作与文件流

一,基础概念 C++IO操作是基于字节流,并且IO操作与设备无关,同一种IO操作可以不同类型设备使用。...C++流是指流入/流出程序字节序列,输入操作中数据从外部设备(键盘,文件,网络等)流入程序,输出操作中数据从程序流向外部设备(控制台,文件,网络等)。...C++编程中,流使用步骤如下: 1.实例化一个流对象。 2.将流对象关联到实际外部设备(键盘,控制台,文件,网络等)。 3.调用流对象中提供成员函数,完成数据转换、传输等操作。...流支持数据类型:数值类型,指针,char类型,std::string类,C风格字符串等。 std标准库包含预定义实例,有cout,cin,cerr,clog等。...字符输出流操作: operator<<:格式化输出。 put:写入单个字符。 write:写入字符数组。 tellp:返回流中的当前操作位置。 seekp:移动到流中指定位置。

18530

c++中ostream类超详细说明

根据前文,ostream类是c++标准输出流一个基类,本篇详细介绍ostream类主要成员函数用法。...,不能直接使用,所以需要使用它继承者stringbuf或者filebuf,这里使用了filebuf,并且我们输出错误信息没有使用cout,这里使用了ostream定义另外一个实例cerr,会输出错误信息到标准错误输出...,编译后执行结果如下: 1234 1234567 从这里out变量用法来看,实际就是实现了标准库中cout功能,当然,我是猜测可能是这样实现。...>/proc/self/fd/1是linux系统中标准输出文件,所以打开这个文件操作的话,反映在程序执行过程中,就是直接输出到标准输出。...按照我理解,ofstream往文件中写入数据时,数据实际是先写到缓冲区中,并没有写到文件中去,所以需要调用一个flush,来确保数据会从缓冲区写到输出设备,也就是文件中去。

2.5K30

《C++Primer》第十七章 标准库特殊设施

string number = "(908) 555-1800"; cout << regex_replace(number, r, fmt) << endl; // 输出908.555.1800 随机数 标准出现之前...虽然标准库为所有流类型都定义了seek和tell函数,但是他们是否会做又有意义事情依赖于流绑定到哪个设备。大多数系统中,绑定到cin,cout,cerr和clog流不支持随机访问。...3.1 seek和tell函数 tellg()和tellp():返回一个输入流中(tellg)或输出流中(tellp)标记的当前位置 seekg(pos)和seekp(pos):一个输入流或输出流中将标记重定位到给定绝对地址...,pos通常是前一个tellg或tellp返回值 seekp(off, from)和seekg(off, from):一个输入流或者输出流中将标记定位到from之前或之后off个字符,from可以是下列值之一...tell函数通常用来记住一个位置,以便稍后再定位回来: // 记住当前写位置 ostringstream writeStr; // 删除stringstream ostringstream::pos_type

72530

c++中istringstream及ostringstream超详细说明

关于这些类之间关系,有兴趣可以去查看我之前文章: c++标准输入输出流关系梳理 1. stringbuf类介绍 stringbuf类缓冲区使用一个std::string类作为存储介质,然后根据构造时读写模式来对...sstream> using namespace std; int main() { stringbuf *buf = new stringbuf(ios_base::in);//构造一个可写...2. istringstream类 前文说过,实际istringstream全名应该是basic_istringstream,istringstream只是basic_istringstream一个...istringstream构造函数与stringbuf参数以及类型一模一样,所以直接按照stringbuf构造函数用法一样使用即可,只是流打开模式而言,istringstream默认是ios_base...3.ostringstream类和stringstream类 ostringstream用于往string写入数据,除了构造时候,默认打开模式是ios_base::out,其他所有函数都与istringstream

1.8K30

c++ 文件操作详解

被打开文件程序中由一个流对象(stream object)来表示 (这些类一个实例) ,而对这个流对象所做任何输入输出操作实际就是对该文件所做操作。...上面的例子读入一个文本文件内容,然后将它打印到屏幕。注意我们使用了一个新成员函数叫做eof ,它是ifstream 从类 ios 中继承过来,当到达文件末尾时返回true 。...,返回pos_type 类型值(根据ANSI-C++ 标准) ,就是一个整数,代表当前get 流指针位置 (用tellg) 或 put 流指针位置(用tellp). seekg() 和seekp(...要求传入参数类型与函数 tellg 和tellp 返回值类型相同。...对二进制文件,你可以任意使用这些函数,应该不会有任何意外行为产生。

1.9K60

c++IO库之string流超详细整理,建议赶紧收藏! ! !

我们一个循环中处理输入数据,每个循环步读取一条记录,提取出一个人名和若干电话号码: string line, word; //分别保存来自输入一行和单词 vector...当string中数据全部读出后while (record >> word),同样会触发"文件结束"信号,record下一个输入操作会失败 注意使用istringstream定义对象绑定一个string...字符串后,向一个string对象输入时,遇到空格会结束当前部分输入 ---- ostringstream使用方法 当我们逐步构造输出,希望最后一起打印时,ostringstream是很有用....formatted.str() << endl; else cout <<"错误信息: "<< entry.name << badnums.str() << endl; } } 我们使用标准输出运算符...(<<)向这些对象写入数据,但这些“写入”操作实际转换为string操作,分别向formatted和badnums中string对象添加字符。

70630

文件IO操作之文件指针

我们之前C++语言中也提到了文件指针这个概念 这里再来复习一下可以说是 文件指针可以理解为文件内部记录读取或者写入的当前位置 每次程序在读写文件时,磁盘中文件指针就会向后移动一个字节 文件流提供以下成员函数来读取或配置文件指针...: tellg()      返回读取文件指针的当前位置 tellp()      返回写入文件指针的当前位置 seekg(指针偏移量)      将读取文件指针移到指定位置 seekg(指针偏移量...ios::beg 从文件头开始计算偏移量 ios::end 从文件末尾开始计算偏移量 ios::cur 从当前位置开始计算偏移量 通过这些成员函数我们就可以修改这些文件指针达到我们需要位置进行读写文件...我们可以通过代码来具体演示一下,实践是检验真理唯一标准 ofstream fs("test.txt"); if (fs.is_open()) { fs <<...运行截图 tellp会返回当前写入文件指针位置 也就是24 写文件写入的话会从24位置继续写入 我们现在设置一下写入文件文件指针 通过seekp成员函数 可以看到我们将写入文件指针设置为

23030

c++文件读写操作

,注意,此时要求data.txt文件中数据是三个一行,每个数据用空格隔开,之所以这样做,是因为许多项目中,比如某为算法比赛中,根据图数据构建图邻接矩阵或者邻接表时,数据都是这样安排,在上面的代码中...data.txt文件数据如下: 程序运行后,result.txt文件内容如下: 因为数据太长只给出一部分 事实,要求data.txt文件中数据都是如此排列要求有点高,如果data.txt文件中有的行有两个数据...注意:上面的代码之所以运行成立,是因为每行之间几行好像并没有影响,比如上面的data.txt中,第一行与第二行之间1行或者2行都没有关系。...2、ostringstream用法 ostringstream同样是由一个string对象构造而来,ostringstream类向一个string插入字符。...std; int main() { ostringstream ostr; // ostr.str("abc");//如果构造时候设置了字符串参数,那么增长操作时候不会从结尾开始增加

1.2K40

《挑战30天C++入门极限》C++iostream标准库介绍(2)

C++iostream标准库介绍(2)   接下来我们继续看一下C++风格串流控制,C++引入了ostringstream、istringstream、stringstream这三个类...istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase...,空格会成为字符串参数内部分界,例子中对a,b对象输入"赋值"操作证明了这一点,字符串空格成为了整型数据与浮点型数据分解点,利用分界获取方法我们事实完成了字符串到整型对象与浮点型对象拆分转换过程...ostringstream同样是由一个string对象构造而来,ostringstream类向一个string插入字符。   ...ostringstream构造函数原形如下:   ostringstream::ostringstream(string str);   示例代码如下: //程序作者:管宁 //站点:www.cndev-lab.com

68310

C++之字符串类学习总结

一、回顾c语言对字符串实现: 一般我们c语言要实现对字符串操作的话,一般是采用字符数组或者一组函数来实现,为啥这样做呢,那是因为c语言里面根本就没有字符串类型关键字;而且c语言也支持自定义类型,...所以更加无法获得字符串类型 为了解决这个问题,c++中,引入了自定义类型,而且可以通过类来完成对字符串类型定义。...二、C++标准库中提供了string类型: string直接支持字符串连接 string直接支持字符串大小比较 string直接支持字符串查找和提取 string直接支持字符串插入和替换 代码示例...: 标准库中提供了相关类对字符串和数字进行转换 字符串流类(sstream)用于string转换 相关头文件 istringstream字符串输入流 ostringstream字符串输出流 1、方法使用.../a.out efgabcd 3、小结: 应用开发中大多数情况都在进行字符串处理 c++中没有直接支持原生字符串类型 标准库中通过string类支持字符串概念 string类支持字符串和数字互换转换

25530

C++:32---IO库

例如头文件fstream定义了ifstream和wifstream IO类型间继承关系 概念,设备类型和字符大小都不会影响我们要执行IO操作。...) 使用标准库中名字 我们使用输入输出对象时,一般在对象前加上命名空间限定符std,标准库定义所有名字都在命名空间std中 例如: std::cout >)来读写文件,可以用getline从一个ifstream读取数据,包括文章前面的那些内容都适用于这些类型 除了继承iostream类型行为之外...ifile为一个文件名ofstream out; //输出文件流,未关联到任何文件 C++新标准之前,文件名只允许C风格字符数组;C++新标准之后,文件名既可以是string对象,也可以是...C风格字符数组 用fstream代替iostream& 文章最开始我们提到过,文件流对象与string流对象都继承于标准输入输出流,因此我们可以将一个文件流对象或string流对象赋值给一个标准输入输出流对象

49530

探究一下c++标准IO底层实现(3000字长文)

对于这两种情况,很明显各个输出类实现方式是不一样,先抛开基本ostream不说,我们先看一下ostringstream和ofstream这两个类实现时异同。...对于第一点,ostringstream和ofstream实现是一样,都是把字符写入缓冲区并把位置向后移动一位,并没有特殊之处。...但对于第二点,ostringstream是调用stringbufoverflow成员函数,它是原来缓冲区用完情况下,重新申请一块更大临时缓冲区,然后把源缓冲区所有的数据复制过来,把当前要输出数据加入到新缓冲区...所以这里对于filebuf,缓冲区就是申请这一块动态内存,外部设备就是文件了,filebuf不论是从逻辑还是实现看,它都是标准三层结构。...linux中,有三个标准输入和输出文件,分别是stdin,stdout,stderr,他们都在/dev目录下,由一章可知,cout实际打开了/dev/stdout这个文件,而/dev/stdout

43540

C++PrimerPlus学习之输入,输出和文件

默认情况下,这个流被关联到标准输入设备(通常是键盘)。wcin对象与此类似,但处理是wchar_t类型。cout对象与标准输出流对应。默认情况下,这个流被关联到标准输出设备(通常为显示器)。...cerr对象与标准错误流相对应,可用于显示错误消息。默认情况下,这个流被关联到标准输出设备(通常为显示器)。这个流没有被缓冲,这意味着信息将被直接发送到屏幕,而不会等到缓冲区填满或新换行符。...clog对象也对应着标准错误流。默认情况下,这个流被关联到标准输出设备(通常为显示器)。这个流被缓冲。wclog对象与此类似。  ...exceptions()默认设置为goodbit,也就是没有引发异常,但重载exceptions(iostate)函数使得能够控制其行为: cin.exceptions(badbit)   一个例子...头文件sstream定义了一个从ostream类派生而来ostringstream类。如果创建了一个ostringstream对象,则可以将信息写入其中,它将存储这些信息。

57800
领券