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

从重定向的stdin获取输入时使用seekg()

从重定向的stdin获取输入时,使用seekg()函数可以帮助我们重新设置输入流的位置,从而实现对输入流的操作。

在C++中,seekg()函数是<iostream>库中的istream类的成员函数,用于设置输入流的当前位置。它的语法如下:

代码语言:txt
复制
istream& seekg (streampos pos);
istream& seekg (streamoff off, ios_base::seekdir way);

其中,pos是一个表示绝对位置的streampos对象,off是一个表示偏移量的streamoff对象,way是一个表示起始位置的ios_base::seekdir枚举类型。

在从重定向的stdin获取输入时,我们可以使用seekg()函数来重新设置输入流的位置,从而实现对输入流的操作。例如,如果我们想要从stdin中读取一个整数,然后再次从stdin中读取一个字符串,我们可以使用以下代码:

代码语言:txt
复制
#include<iostream>
#include<string>

using namespace std;

int main() {
    int num;
    string str;

    cin >> num;

    // 重新设置输入流的位置
    cin.seekg(0, ios::beg);

    getline(cin, str);

    cout << "num: "<< num<< endl;
    cout << "str: "<< str<< endl;

    return 0;
}

在上面的代码中,我们首先从stdin中读取一个整数,然后使用seekg()函数将输入流的位置重新设置为0,表示从stdin的开头开始读取。接着,我们使用getline()函数从stdin中读取一个字符串,并将其存储在str变量中。最后,我们输出num和str的值。

需要注意的是,seekg()函数只能用于设置输入流的位置,不能用于设置输出流的位置。此外,seekg()函数只能用于二进制流或者文本流,而不能用于字符流。

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

相关·内容

  • C++文件读写

    例如:当我们要对一个不是打开为写状态文件进行写入时,或者我们要写入设备没有剩余空间时候。...为了能够更为方便地对文件进行操作,还需要能够判断我们读文件读到了哪里,使用函数tellg/tellp 用于提取当前文件指针位置,使用函数 seekg/seekp 来将文件指针移到某处 tellg()...seekg() 和seekp() 这对函数分别用来改变流指针get 和put位置。...两个函数都被重载为两种不同原型: seekg ( pos_type position ); seekp ( pos_type position ); 使用这个原型,流指针被改变为指向从文件开始计算一个绝对位置...tellg()函数获取文件指针位置,然后使用seekg()函数将文件指针后移6个字符,因此读取结果为 "fan"。

    1.1K30

    c++中fstream是什么意思_c++形式参数

    而这三种流 事实上是系统定义类. 操作中, 首先使流与文件相关联, 通过流(也就是类成员)来完成对文件操作. 文件使用完毕, 一定要关闭, 从而切断流与文件关联, 否则可能会损坏文件....在程序中要打开一个输入文件流, 对文件进行读操作, 必须说明类型为ifstream对象; 要打开一个 出文件流, 对文件进行写操作, 必须说明类型为ofstream对象; 要建立一个输入输出流,..., sizeof(buf)); 2) 也可以使用C++中抽取操作符实现, 如: test_file << str; // write str to file test_file >> buf; /...移动流读写位置 移动读写位置可以通过seekg或是seekp实现: 1) test_file.seekg(10, ios::beg); 2) test_file.seekp(10, ios::beg)...; seekp(seek put)用于ofstream对象, seekg(seek get)用于ifstream对象.

    65520

    C语言-文件操作

    如果不使用程序的话我们所运行程序在推出后就会丢失数据,这是因为我们运行时候他使用是电脑内存,在退出程序后内存会被回收,数据也就随之而去了,再次运行程序就找不到之前数据了。...我们程序数据需要输出到各种外部设备,也需要从外部设备获取数据,不同外部设备⼊输出操作各不相同,为了⽅便程序员对各种设备进行方便操作,我们抽象出了流概念,我们可以把流想象成流淌着字符河。...3.1.2 标准流 在C语言中,标准库提供了一组预定义流,称为标准流(standard streams),它们包括标准输入流(stdin)、标准输出流(stdout)和标准错误流(stderr)。...标准输入流(stdin):标准输入流用于从程序外部读取数据,通常与键盘输入相关联。当你使用scanf等函数读取用户输入时,实际上是从标准输入流中读取数据。...函数 所有⼊流 fputc 字符输出函数 所有输出流 fgets ⽂本⾏⼊函数 所有⼊流 fputs ⽂本⾏输出函数 所有输出流 fscanf 格式化⼊函数 所有⼊流 fprintf 格式化输出函数

    8310

    从零开始学C++之IO流类库(三):文件读写、二进制文件读写、文件随机读写

    二进制文件不同于文本文件,它可用于任何类型文件(包括文本文件) 对二进制文件读写可采用从istream类继承下来成员函数read()和从ostream类继承下来成员函数write() 文件打开操作时使用枚举常量...fout2 << "abc" << 200; // << 是以文本方式写入     fcout2.close();     return 0; } 在window下以文本方式打开文件,则以文本方式写入时遇到...使用read, write 读取string 时候需要注意,string 实际上内部是一些指针成员,sizeof(string)=32 (跟编译器实现有关),即string 大小是一定, 而它指针成员保存字符串长度不一定是...(二)、文件随机读写 seekp和seekg seekp 和 seekg 类似与C库fseek, linux系统调用lseek。...函数功能 seekp:设置输出文件流文件流指针位置 seekg:设置输入文件流文件流指针位置 函数原型: ostream& seekp( streampos pos ); ostream

    3.1K10

    fstream用法

    3.2 二进制文件读写 (1) put() put()函数向流写入一个字符,其原型是ofstream &put(char ch),使用也比较简单,如output.put(‘c’);就是向流写一个字符...指定字符,如果没使用 delim 这个参数,将使用缺省值换行符’\n’。...每次执行输入或输出时,相应指针自动变化。所以,C++文件定位分为读位置和写位置定位,对应成员函数是seekg()和seekp()。seekg()是设置读位置, seekp是设置写位置。...例: output.seekg(1234,ios::cur); //把文件读指针从当前位置向后移1234个字节 input.seekp(1234,ios::beg); //把文件写指针从文件开头向后移...因为在ios::text模式下,在写入时’\ n’字符将转换成两个字符:回车+换行(HEX: 0D 0A) 写入,读入时作逆转换,这容易引起不必要麻烦。

    86620

    《Linux命令行与shell脚本编程大全》第十五章 呈现数据

    每个进程一次最多可以有九个文件描述符 bash shell保留前3个文件描述符(0、 1、 2) 1.STDIN 标准输入(0) STDIN文件代表shell标准输入。...shell从STDIN文件描述符对应键盘获得输入,在用户输入时处理每个字符 在使用输入重定向符号( < )时,Linux会用重定向指定文件来替换标准输入文件描述符。...15.3 在脚本中重定向输入 exec 命令允许你将STDIN定向到Linux系统上文件中。 例子:查看test2中数据   1 #!.../bin/bash   2 exec 6<&0 # 6先保存STDIN位置   3 exec 0<test5 # 将STDIN定向到 test5   4 count=1   5 while...它将STDIN过来数据同时发往两处,一处是STDOUT,一处是指定文件。

    1.3K60

    c++ 文件操作详解

    这就是为什么 fstream 对象可以使用其父类成员来访问数据。 一般来说,我们将使用这些类与同控制台(console)交互同样成员函数(cin 和 cout)来进行输入输出。...例如:当我们要对一个不是打开为写状态文件进行写入时,或者我们要写入设备没有剩余空间时候。...两个函数都被重载为两种不同原型: seekg ( pos_type position ); seekp ( pos_type position ); 使用这个原型,流指针被改变为指向从文件开始计算一个绝对位置...seekg ( off_type offset, seekdir direction ); seekp ( off_type offset, seekdir direction ); 使用这个原型可以指定由参数...由于这个原因,建议对以文本文件模式打开文件总是使用seekg 和 seekp第一种原型,而且不要对tellg 或 tellp 返回值进行修改。

    1.9K60

    Shell脚本学习3

    ;; esac } 注意,10 不能获取第十个参数,获取第十个参数需要{10}。当n>=10时,需要使用 特殊变量 说明 $# 传递给函数参数个数。 $* 显示所有传递给函数参数。...函数返回值。 获取函数返回值 #!.../bin/bash function sum() { echo `expr 1+2+3` } num=$(sum) 重定向 输入输出重定向 Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备...和 stderr 合并后重定向到 file command file2 # stdin 和 stdout 都重定向 全部可用定向命令列表: 命令 说明 command > file.../sub.sh echo $name 获取当前正在执行脚本绝对路径 正确命令是: basepath=$(cd `dirname $0`; pwd) #保证执行时一定进入了当前文件位置,再使用pwd输出

    23320

    Shell 输入输出重定向

    如果要将新内容添加在文件末尾,请使用>>操作符。...输出重定向会覆盖文件内容,请看下面的例子: $ echo "xiaogongjiang" > users $ cat users xiaogongjiang $ 如果不希望文件内容被覆盖,可以使用 >>...语法 和输出重定向一样,Unix 命令也可以从文件获取输入,语法为: command1 < file1 这样,本来需要从键盘获取输入命令会转移到文件读取内容。...重定向详解 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件: 标准输入文件(stdin):stdin文件描述符为0,Unix程序默认从stdin读取数据。...stdin 和 stdout 都重定向,可以这样写: $ command file2 command 命令将 stdin定向到 file1,将 stdout 重定向到 file2

    1.1K40

    UNIX 系统Shell 输入输出重定向命令

    需要注意是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。 ---- 输出重定向定向一般通过在命令间插入特定符号来实现。...如果要将新内容添加在文件末尾,请使用>>操作符。...cat users 菜鸟教程:www.runoob.com 菜鸟教程:www.runoob.com $ ---- 输入重定向 和输出重定向一样,Unix 命令也可以从文件获取输入,语法为: command1...< file1 这样,本来需要从键盘获取输入命令会转移到文件读取内容。...重定向深入讲解 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件: 标准输入文件(stdin):stdin文件描述符为0,Unix程序默认从stdin读取数据。

    1.1K30

    Linux系列之重定向操作

    除此之外,一些程序从标准输入stdin获取输入。默认情况下,标准输入与键盘相连接。 默认情况下,stdout和stderr 都被链接到屏幕上,而不是保存到文件中。...重定向允许我们改变输出去向和输入来源。 重定向标准输出 为了重定向到其他文件而不是屏幕上,我们使用>重定向操作符,后面跟随文件名称。...需要注意是,使用>重定向操作符会覆盖目标文件。如果要追加内容,我们可以使用>>重定向操作符。 重定向标准错误 为了重定向stderr,我们必须引用其文件描述符。...cat < sample.txt 管道 使用管道操作符| ,一个命令stout可以通过管道进入另一个命令stdin,less就是一个例子: ls -l /usr/bin | less 可以把几个命令放在一起...使用这种方式命令被称为过滤器。过滤器接受输入,以某种方式改变它,然后输出它。 tee命令 tee命令读取stdin并将其复制到stdout和一个或多个文件中。

    1.3K20

    【Linux】基础IO --- 系统级文件接口、文件描述符表、文件控制块、fd分配规则、重定向

    很容易被忽略细节: 1.fprintf向文件写入时,换行符也是会被写入到文件当中 2.fgets在读取文件内容时候,换行符会被认为是有效字符读取到缓冲字符数组里面的,并且在每行读取结束后,fgets...如果write写入时第三个参数要多加一个\0位置,创建出来log.txt用vim打开时会出现乱码,以\0作为字符串结束标志,这是C语言规定和文件没有关系,文件只要存储有效内容就好了,不需要\0,...在某些命令使用错误时,会将错误信息输出到stderr(标准错误输出文件)中。 例如下面的la指令使用错误,错误信息会被输出到stderr中,最后显示到stderr对应终端显示器上。...文件log.txt中内容,作为输入重定向重新输出到显示器中,即使fgets获取方式是stdin也没有关系,因为我们使用dup2将stdin地址改为了文件log.txt地址。...=NULL); 88 //将获取入时输入回车赋值成反斜杠0 89 command_line_array[strlen(command_line_array

    1.2K30
    领券