文章目录
- C++中常用的几种输入字符串的方式
- 2. cin
- 3.
- 4. ()
- ()
C++中常用的几种输入字符串的方式
scanf如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理
#include <cstdio>
using namespace std;
int main (){
char s[100];
scanf("%s",s);
printf("%s",s);
}
//输入123123 123123
//输出123123
2. cin
cin输入遇到空格、回车、Tab就结束输入,进入下个输入
#include <iostream>
using namespace std;
int main (){
char s[100];
cin>>s;
cout<<s;
}
//输入123123 123123
//输出123123
3.
用法一: (无参)
()用法和getchar()类似
#include <iostream>
using namespace std;
int main (){
char ch;
ch=cin.get(); //获取一个字符
// (ch);//第二种形式
cout<<ch<<endl;
}
//输入:123123
//输出:1
用法二: (变量名)
(字符数组名,接受字符个数)可以接受一行字符,可以接受空格
#include <iostream>
using namespace std;
int main (){
char a[20];
cin.get(a,20); //可以输入多个字符串,中间空格隔开。
cout<<a<<endl;
}
//输入:123 123 123
//输出:123 123 123
//输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
//输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')
4. ()
可以接受空格,遇到换行停止
用法一:(字符数组名,字符个数)
用法二:(字符数组名,字符个数,结束字符)
上面两种用法第一种是默认’\n’结束,第二种是结束字符结束
结束字符不会被读入
实际字符串只有(字符个数-1) 个字符,因为最后一个字符为’\0’
#include <iostream>
using namespace std;
int main (){
char m[20];
cin.getline(m,5); //与上面基本相同。
cout<<m<<endl;
cin.getline(m,5,'x');
//当设置了结束字符后,在结束字符之前输入换行不会影响字符的输入,此时的换行会存入字符串中
cout << m;
return 0;
}
输入
123123
输出
1231//接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出
如果把5改成20:
输入:jkljkljkl
输出:jkljkljkl
输入:jklf fjlsjf fjsdklf
输出:jklf fjlsjf fjsdklf
能接受空格输入,用法和上一种基本相同,但是需要string头文件
输入一个字符串
用法一:getline(字符串名,字符个数)
用法二:getline(字符串名,字符个数,结束字符)
上面两种用法第一种是默认’\n’结束,第二种是结束字符结束
结束字符不会保存在字符串中
#include<iostream>
#include<string>
using namespace std;
int main (){
string str;
getline(cin,str);
cout<<str<<endl;
getline(cin,str,'x');
//当设置了结束字符后,在结束字符之前输入换行不会影响字符的输入,此时的换行会存入字符串中
cout << str;
}
输入:123123
输出:123123
和()类似.
但是()属于istream流.
而getline()属于string流,是不一样的两个函数
()
能接受空格,并在输入换行后在字符串结尾添加’\0’。
需要头文件#include< cstring >或#include< >
#include<iostream>
#include<cstring>
using namespace std;
int main (){
char str[100];
gets(str);
cout<<str<<endl;
}
输入123123
输出123123
gets很方便但是有个缺点,就是不能输入string类,还有就是输入数组时可能会有越界的风险。