字符(串)多种输入函数方法
(string对象的读入,自动忽略开头空白(换行,空格,制表)符,从严格意义上的第一个真正字符开始读入)
首当其冲就是C/C++的基本输入方法
printf()&&scanf() C语言输入输出函数
单字符的占位符为“%c”;读取单字符
字符串的占位符为“%s”;读取一个中间没有空格且没有换行的字符串
cout&&cin C++输入输出缓冲流
// 字符串的输入以空格结束
1;getline()包含两个参数
getline(流参数,输入string对象)
头文件:#include <string>
istream& getline ( istream &is , string &str , char delim ); (原型)
用法(1). getline(cin,str);
(2). cin,getline(str,length) 指定输入length个字符,包含末尾一个‘\0’
2; gets()/puts()
读取整行字符,包括空格,遇回车结束,但换行符会被丢弃,然后在末尾添加'\0'字符
puts输出与gets对应,可输出空格
调用格式:gets(s); s为字符串变量(字符串数组名或字符串指针)
puts输出字符串时要遇到'\0’也就是字符结束符才停止,并换行
(注意;1. puts只能输出字符,不能是数值或者进行格式转化
2. 如果输入顺利,它返回的是读入字符串的地址;如果出错或gets()遇到文件结尾,它就返回一个空(或0)地址)
3; getchar()/putchar()
getchar()返回读入字符的ASCII码,可以对其处理输出对应字符
可以printf,占位符%c 输出字符
使用方法示例代码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
using namespace std;
const int maxn=1000+10;
int main(){
// freopen("C:\\Users\\24398\\Desktop\\in-project.txt","r",stdin);
// string str; //error getsd的对象必须是char*
char str1[maxn];
gets(str1);
cout<<str1<<endl;
puts(str1);
// puts(1); //error
char str2[maxn];
// string str2; //error !!!
cin.getline(str2,5);
string str3;
getline(cin,str3);
//读入未知数量对象
string str;
//1.cin
while(cin>>str){
cout<<str;
}
//2.getline
while(getline(cin,str)){
cout<<str; //多种判断方法
if(str.size()>maxn) cout<<str;
if(str.empty()>maxn) cout<<str;
}
//3.gets
while(gets(str)){
cout<<str;
}
//4.getchar
int c;
while((c==getchar())!=EOF){
cout<<c; //多种方法
printf("%c",c);
putchar(c);
}
return 0;
}
4;文件格式的输入
fget()/fput()
fgetc()/fputc()
打开一个文件(参数),读入单个字符,返回一个int值
文件输入结束,则返回一个特定标记EOF
fgets()/fputs()
原型 char * fgets(char * s, int n,FILE *stream);
参数:
s: 字符型指针,指向存储读入数据的缓冲区的地址。
n: 从流中读入n-1个字符
stream : 指向读取的流。
返回值:
1. 当n<=0 时返回NULL,即空指针。
2. 当n=1 时,返回空串"".
3. 如果读入成功,则返回缓冲区的地址。
4. 如果读入错误或遇到文件结尾(EOF),则返回NULL.