字符串输入(string/char[])
string str
不含空格
cin>>str;
含空格
getline(cin,str);
char str[100]
不含空格
scanf("%s",str);
含空格
cin.getline(str,100);
string/int转换
int转string
string s = to_string(int x)
string转int
int x = stoi(string s)//支持double
string/char[]转换
char数组转string,用cout输出char数组
直接赋值
char a[]=" abc d\0efg ";
string s=a; //直接赋值
cout<<s;
结果显示: abc d
输出到’\0’截止
string转char数组,用printf输出string
printf("%s\n", id.c_str());//id是string
string str1 = "ABCDEFG";
char a[20];
strcpy(a,str1.c_str());//用到 c_str()函数
转换神器:stringstream
任意两个类型之间的转换
数字转为字符串
double a = 133.454;
string str;
stringstream s;
s << a;
s >> str;
字符串转为数字
string str = "13243.4545";
double a;
stringstream s;
s << str;
s >> a;
不知道一行有多少个元素的时候用
一般这种情况用的比较多,第一种情况一般直接用专门的转换函数就可,因为stringstream的效率较低
比如一行有一些用空格分隔的整数,但没有给整数的数量,用下面的代码段实现把每个整数存入数组中并得到整数的个数:
int a[100];
getline(cin,str);//得到有空格的一行,getline
stringstream s;
s << str; //将字符串输入stringstream的流中
while(s >> a[cnt]) cnt ++;//将s输入到整型数字中,类比cin,从cin的流中输入到整型数字
例题: 1557.说话方式
gets
可以使用
getline(cin, str)
嘻嘻谢谢~已修正~