C++ cin不支持录入空格

如果在C++中,用cin>>str;这种方法来接收字符串那么录入的str不能包含空格,否则它会按照空格将整个字符串切分成若干段。如果你要是想输入带空格的字符串那就要用到getline()这个函数了。

示例代码如下:

#include <iostream>
#include <sstream>   //getline 包含在 sstream 中,要include!
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	string data;
	getline(cin, data);

	cout<<"Your input is : "<<data;

	cin.get();
	return 0;
}
效果如下如所示:




  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的病人信息录入程序的代码示例,包括病人的病历号、姓名、性别和年龄。为了确保病历号不重复,我们使用了一个静态变量来记录已经分配的最大病历号,并在每次分配新的病历号时进行检查。代码示例如下: ```c++ #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; class Patient { private: int id; // 病历号 string name; // 姓名 char gender; // 性别 int age; // 年龄 public: static int maxId; // 静态变量,记录已经分配的最大病历号 Patient(string name, char gender, int age) { this->id = ++maxId; // 分配新的病历号 this->name = name; this->gender = gender; this->age = age; } int getId() const { return id; } string getName() const { return name; } char getGender() const { return gender; } int getAge() const { return age; } }; int Patient::maxId = 0; int main() { vector<Patient> patients; // 存储病人信息的容器 while (true) { // 读入病人信息 string name; char gender; int age; cout << "请输入病人姓名、性别、年龄(以空格分隔):" << endl; cin >> name >> gender >> age; // 检查病历号是否重复 if (find_if(patients.begin(), patients.end(), [&](const Patient& p){ return p.getId() == Patient::maxId + 1; }) != patients.end()) { cout << "病历号已存在,请重新输入!" << endl; continue; } // 创建病人对象并添加到容器中 patients.push_back(Patient(name, gender, age)); cout << "病人信息录入成功!病历号为:" << Patient::maxId << endl; // 显示已录入的病人信息 cout << "已录入的病人信息:" << endl; for (const Patient& p : patients) { cout << "病历号:" << p.getId() << ",姓名:" << p.getName() << ",性别:" << p.getGender() << ",年龄:" << p.getAge() << endl; } } return 0; } ``` 在上面的代码中,我们使用了一个静态变量`maxId`来记录已经分配的最大病历号。每次创建新的病人对象时,我们都通过`++maxId`来分配一个新的病历号。在分配新的病历号之前,我们使用了`find_if`算法来检查病历号是否已经被分配。如果已经被分配,就提示用户重新输入病人信息。否则,就创建病人对象并添加到容器中。最后,我们遍历容器中的所有病人对象,显示已经录入的病人信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值