请问想输入一个带空格的字符串再输入数字等内容,这样写为什么不行?

#include<iostream>
using namespace std;
struct pizza{
	char name[1000];
	double r;
	double weight;
};
int main()
{
	pizza quantity[10];
	int i,j;
	for(i=0;i<2;i++){
		cin>>quantity[i].name;
		cin>>quantity[i].r;
		cin>>quantity[i].weight;
	}
	for(i=0;i<2;i++)
	cout<<quantity[i].name<<" "<<quantity[i].r<<" "<<quantity[i].weight<<endl;
	return 0;
}

 

既然是C++,当然是建议使用c++的getline();读取一行

配合字符串string进行使用,在输入过程中得要适当清空输入缓冲区即可。

#include<iostream>
#include <string>
using namespace std;
struct pizza {
	//char name[1000];
	string name;
	double r;
	double weight;
};
int main() {
	pizza quantity[10];
	int i, j;
	for (i = 0; i < 2; i++) {
		//cin >> quantity[i].name;
		getline(cin, quantity[i].name); 
		cin >> quantity[i].r;
		cin >> quantity[i].weight;

		// 清空输入缓冲区
		char c;
		while ((c = getchar()) != '\n');
	}
	for (i = 0; i < 2; i++)
		cout << quantity[i].name << " " << quantity[i].r << " " << quantity[i].weight << endl;
	return 0;
}

带空格的字符串?cin碰到空格就中断了。。。用gets(a)就可以,用gets会直接读取这一行作为数据,你后面再输入r要先回车