c++输入问题

cin

用cin输入字符串的时候,遇到空格会自动停止,比如下面这段代码

#include
using namespace std;

int main(int argc,char** argv){
	string s;
	cin>>s;
	cout<<s<<endl;
	cout<<s.size()<<endl;
	return 0;
}

输入adfiaf asfafja asfijaio
输出:adfiaf 6
可以看出只截取了空格前的字符串,长度是6

cin.get()

  • 1.只能接受字符串参数,其他类型不行
#include
using namespace std;

int main(int argc,char** argv){
	char a;
	cin.get(a);
	cout<<a<<endl;	
	return 0;
}

  • 接受字符串数组和数组长度,能接受空格
#include
using namespace std;

int main(int argc,char** argv){   
        char in[10];
        cin.get(in,10);
        for(int i = 0;i<10;i++){
                cout<<in[i]<<","<<endl;
        }
        return 0;
}

getline(cin,string s)

可以接受有空格的字符串,string类的方法

#include
#include
using namespace std;

int main(int argc,char** argv){
	string s;
	int n;
	cin>>n;
	vector<string> vs;
	while(n){
		getline(cin,s);
		vs.push_back(s);
		n--;
	}
	for(int i = 0;i < vs.size();i++){
		cout<<"result is:";
		cout<<vs[i]<<endl;
	}
	return 0;
}

getchar()

遇到回车直接结束,不管是不是还有循环等…

#include
#include
using namespace std;

int main(int argc,char** argv){
        string s;
        int n;
        cin>>n;
        vector<string> vs;
        while(n){
                s = getchar();
                vs.push_back(s);
                n--;
        }
        for(int i = 0;i < vs.size();i++){
                cout<<"result is:";
                cout<<vs[i]<<endl;
        }
        return 0;

}

输入3 d
按回车之后直接结束
输出
`result is:

result is:d
result is:`

你可能感兴趣的:(C++)