C++
中常见的几种输入字符串的方法如下:
std::cin
、std::cin.get()
、std::cin.getline()
、std::getline()
、std::gets()
、std::getchar()
1. std::cin
1.1 最常用、最基本的用法,输入一个数字
#include <iostream>
int main()
{
int a, b;
std::cin >> a >> b;
std::cout << a + b << std::endl;
return 0;
}
输入输出结果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
2
3
5
wohu@ubuntu-dev:~/project/cpp$
1.2 接受一个字符串,遇“空格”、“Tab”、“回车”都结束
#include <iostream>
int main()
{
char a[10];
std::cin >> a ;
std::cout << a << std::endl;
return 0;
}
输入输出结果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abdcef
abdcef
wohu@ubuntu-dev:~/project/cpp$ ./main.out
ab cdef # 遇空格结束,所以不能输入多个单词
ab
wohu@ubuntu-dev:~/project/cpp$
2. std::cin.get()
2.1 std::cin.get() 用来接收单个字符
#include <iostream>
int main()
{
char ch;
ch = std::cin.get();
std::cout << ch << std::endl;
return 0;
}
输入输出结果:只能用于输入一个字符。
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abcdef
a
wohu@ubuntu-dev:~/project/cpp$
2.2 std::cin.get(字符数组名,接收字符数)
#include <iostream>
int main()
{
char ch[10];
std::cin.get(ch, 10);
std::cout << ch << std::endl;
return 0;
}
输入输出结果:
- 可以接收空格
- 输入超 10 个字符时,接收 9个字符+1个
\0
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abcdefghijkl
abcdefghi
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abcd efgh
abcd efgh
wohu@ubuntu-dev:~/project/cpp$
2.3 cin.get(无参数)主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足
#include <iostream>
int main()
{
char ch[10];
std::cin.get(ch, 10);
std::cin.get(); //用于吃掉回车,相当于getchar();
std::cout << ch << std::endl;
std::cin.get(ch, 5);
std::cout << ch << std::endl;
return 0;
}
输入输出:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abdedds
abdedds
adbcd
adbc
wohu@ubuntu-dev:~/project/cpp$
注释掉 std::cin.get()
之后
#include <iostream>
int main()
{
char ch[10];
std::cin.get(ch, 10);
// std::cin.get();
std::cout << ch << std::endl;
std::cin.get(ch, 5);
std::cout << ch << std::endl;
return 0;
}
输入输出结果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abdecdf
abdecdf
wohu@ubuntu-dev:~/project/cpp$
3. std::cin.getline()
3.1 接受一个字符串,可以接收空格并输出
#include <iostream>
int main()
{
char ch[20];
std::cin.getline(ch, 5);
std::cout << ch << std::endl;
return 0;
}
输入输出:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abcdef
abcd
wohu@ubuntu-dev:~/project/cpp$
接受 5 个字符到 ch
中,其中最后一个为 \0
,所以只看到 4 个字符输出。
把 5 改成 20 后运行:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abc def ghi
abc def ghi
wohu@ubuntu-dev:~/project/cpp$
3.2 扩展
std::cin.getline()
实际上有三个参数,cin.getline(接受字符串到m,接受个数5,结束字符)
,当第三个参数省略时,系统默认为 \0
是 /n
吧。
如果将例子中 std::cin.getline()
改为 std::cin.getline(m,5,'a')
;
- 当输入
jlkjkljkl
时输出jklj
; - 输入
jkaljkljkl
时,输出jk
;
4. getline()
接受一个字符串,可以接收空格并输出,需包含 #include<string>
。
#include <iostream>
#include <string>
int main()
{
std::string str = "";
getline(std::cin, str);
std::cout << str << std::endl;
return 0;
}
输出结果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abc def gh
abc def gh
wohu@ubuntu-dev:~/project/cpp$
和 cin.getline()
类似,但是 cin.getline()
属于 iostream
流,而 getline()
属于 string
流,是不一样的两个函数。
5. getchar
接受一个字符,需包含 #include<string>
#include <iostream>
#include <string>
int main()
{
char ch;
ch = getchar(); //不能写成 getchar(ch);
std::cout << ch << std::endl;
return 0;
}
输入输出结果:
wohu@ubuntu-dev:~/project/cpp$ ./main.out
abd
a
wohu@ubuntu-dev:~/project/cpp$
getchar()
是 C
语言的函数,C++
也可以兼容,但是尽量不用或少用;
6. gets()
warning: ‘char* gets(char*)’ is deprecated
该函数已被弃用,尽量少用。
原文地址:https://blog.csdn.net/u011486738/article/details/82082405
描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。不区分大小写,字符串长度小于500。
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。
输出描述:
输出输入字符串中含有该字符的个数。
示例1
输入:
ABCabc
A
输出:
2
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
int res = 0;
while(getline(cin,s)){
char a;
cin>>a;
cin.ignore(); //此处ignore()不加也可以
a = tolower(a);
for(int i = 0 ; i < s.size(); i++){
if(s[i]==a||s[i]== a-32){
res++;
}
}
}
cout<<res<<endl;
}
本题要点:
1.注意cin 与 getline的使用 如果是先cin输入一定要加cin.ignore() 原因:cin输入如果用回车结尾,那么getline获得的第一个字符就是‘\n’,输入的时候按个enter啥效果就不用我给大家介绍了吧。
2.大小写的判断注意toupper和tolower的灵活使用