C++cin输⼊的多种⽅法详解
⽬录
前⾔
⼀、cin
1、cin >>
2、()
2.1 函数介绍
3、getline()
前⾔
在C++中⼀般使⽤cin来进⾏交互,获取⽤户输⼊信息。cin是C++编程语⾔中的标准输⼊流对象,即stream类的对象。cin主要⽤于从标准输⼊读取数据,这⾥的标准输⼊,指的是终端的键盘。主要⽤到有cin >>、()、line()。cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待
数据的到来,⼀旦缓冲区中有数据,就触发cin的成员函数去读取数据。
⼀、cin
1、cin >>
⽀持连续读取,以Tab、空格为分隔符,换⾏符为结束符号;
/*----------------------------------------------------------------------
> File Name: cinDemo01.cpp
> Author: Jxiepc
> Mail: Jxiepc
> Created Time: Mon 20 Sep 2021 10:09:55 AM CST
----------------------------------------------------------------------*/
#include<iostream>
#include<unistd.h>
#include<cstring>
int main(int argc, char *argv[]){
std::string s;
while(std::cin >> s){
std::cout << s << std::endl;
}
return 0;
}
当cin>>从缓存区读取数据时,会⾃动忽略作为第⼀个字符存在的Tab、空格(Space)、换⾏,继续读取下⼀个字符,若缓存区为空,则等待。但是如果读取成功,字符后⾯的分隔符是残留在缓冲区的,cin>>不做处理。
2、()
读取字符,包含空格;
/*----------------------------------------------------------------------
> File Name: cinGetDemo.cpp
> Author: Jxiepc
> Mail: Jxiepc
> Created Time: Mon 20 Sep 2021 10:20:59 AM CST
----------------------------------------------------------------------*/
#include<iostream>
#include<unistd.h>
#include<cstring>
#include<fstream>
void test02(){
char str[256];
std::cout << "Enter the name of an existing text file: ";
std:: (str,256); // get c-string
std::ifstream is(str); // open file
char c;
while (is.get(c)) // loop getting single characters
std::cout << c;
is.close(); // close file
}
void test01(){
char a,b;
cstring转为inta = std::();
std::cout << "a:" << a <<std::endl;
std::(b);
std::cout << "b:" << b << std::endl;
}
int main(int argc, char *argv[]){
std::cout << "测试字符..." << std::endl;
test01();
std::cout << "--------------------------------------" << std::endl;
//sleep(1);
//std::cout << "测试get读取⽂件" << std::endl;
//test02();
return 0;
}
2.1 函数介绍
int get();
istream& get(char&c);
/*
* @func:- 单个字符;
* - 不会忽略分隔符;
* - 成功读取的时候则返回字符的ASCII码值,遇到⽂件结束符时则返回EOF(-1);
*/
istream& get (char* s, streamsize n);
istream& get (char* s, streamsize n, char delim);
/*
* @func: - 从在流提取C-串,直到(n-1)字符已被提取或定界字符结束。('\n')或DELIM(⾃定义)。
* - 若到定界符则不会从输⼊序列中提取,并保留作为从流中提取的下⼀个字符。
* - 如果n⼤于0,即使提取的是空字符串,也会⾃动添加⼀个空字符('\0')到写⼊序列。
* @param s:接收字符串;
* @param n:- 写⼊s的最⼤字符数(包括终⽌空字符);
* - 若⼩于2,则函数不提取任何字符并设置failbit;
* - Streamsize是⼀种带符号的整型。
* @param delim:⾃定义结束符。
*/
istream& get(streambuf&sb);
istream& get (streambuf& sb, char delim);
/
*
* @func:- 从流中提取字符,并将其插⼊到输出序列流缓冲区对象控制的某⼈,('\n')或DELIM(⾃定义)。
* - 只有成功插⼊的字符才会从流中提取。分隔字符,还是最终未能插⼊的字符,保留在那⾥作为下⼀个要从流中提取的字符。*/
3、getline()
从标准输⼊设备读取⼀串字符串,并以指定的结束符结束。
/*----------------------------------------------------------------------
> File Name: cinGetlineDemo.cpp
> Author: Jxiepc
> Mail: Jxiepc
> Created Time: Mon 20 Sep 2021 11:08:17 AM CST
----------------------------------------------------------------------*/
#include<iostream>
#include<unistd.h>
#include<cstring>
void test01(){
char name[200];
std::cout << "请输⼊:" ;
std::line(name, 200);
std::cout << name << std::endl;
}
int main(int argc, char *argv[]){
test01();
return 0;
}
函数介绍
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
/*
* @func:- 从流中提取字符作为未格式化的输⼊,并将它们以c字符串的形式存储到s中,直到提取的字符成为分隔符,或者有n个字符被写⼊s中(包括结束的空字符);* - 如果到达⽂件结束符,该函数也将停⽌提取字符;
* - 若n⼤于0,提取到空串,也会⾃动添加⼀个空字符('\0')到写⼊序列。
* @param s:指向字符数组的指针,在该数组中提取的字符存储为c字符串;
* @param n:写⼊s的最⼤字符数(包括终⽌空字符);
* @param delim:结束符;
*/
到此这篇关于C++ cin输⼊的⼏种⽅式的⽂章就介绍到这了,更多相关C++ cin输⼊内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希
望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论