输入字符串的方式

时间:2025-04-01 07:18:55

文章目录

      • 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类,还有就是输入数组时可能会有越界的风险。