字符串的输入一般情况下都是用数组来输入储存。
比如输入一个100长度的字符串往往会这样做 |
---|
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[100];
for(int i=0;i<100;i++){
cin>>a[i];
}
return 0;
}
如果不使用string和STL,
只使用char数组来存的话,就是有很多可能会浪费很多空间和存不下长度怎么办呢,比如你的字符串长度为50,那么另外50的空间就浪费了没有用到,还有如果你要输入的字符串长度为200,那么另外100是不能被存入的。
那么怎么样能不使用数组,输入字符串呢!
比如输入I am a boy 这个字符串,可以使用while加scanf进行单个字符逐个输入 |
---|
#include<bits/stdc++.h>
using namespace std;
int main(){
char a;
while(scanf("%c",&a),a!='.'){
cout<<a;
}
return 0;
}
这里简单提一下scanf的另一个强大功能,scanf可以在运行框内连续输入多个字符,后边的字符在前面的字符进行操作后,随后输入,从这方面看scanf有一定的保存功能。
这样即使不知道字符串长度也能输入,而且不会出现浪费和数组越界问题。