根据C++的流类库与输入输出,请用类设计一个随机点名的小程序,实现随机点名的功能
时间: 2024-03-27 20:41:29 浏览: 64
好的,根据您的要求,我设计了一个随机点名的小程序,使用了C++的流类库与输入输出。以下是程序的代码:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
class RandomNameSelector {
public:
RandomNameSelector(const string& filename) {
ifstream infile(filename);
if (!infile) {
cerr << "Error opening file: " << filename << endl;
exit(1);
}
string name;
while (infile >> name) {
names_.push_back(name);
}
infile.close();
}
void selectWinner() {
if (names_.empty()) {
cout << "No names found!" << endl;
return;
}
srand(time(NULL));
int index = rand() % names_.size();
cout << "The winner is: " << names_[index] << endl;
}
private:
vector<string> names_;
};
int main() {
RandomNameSelector selector("names.txt");
selector.selectWinner();
return 0;
}
```
这个程序通过类`RandomNameSelector`实现随机点名的功能。在构造函数中,它从指定的文件中读取名字列表,并保存到`vector<string>`类型的私有成员变量`names_`中。在`selectWinner()`函数中,它使用`rand()`函数生成一个随机数,根据这个随机数从`names_`中选择一个名字作为获奖者。注意,程序使用了`srand(time(NULL))`语句来初始化随机数生成器,以保证每次运行程序时都能得到不同的结果。
在`main()`函数中,程序创建了一个`RandomNameSelector`对象,并调用`selectWinner()`函数进行随机点名。注意,程序要求名字列表保存在`names.txt`文件中,您需要在程序运行前准备好这个文件,并确保文件中每行只包含一个名字。
希望这个程序能够满足您的要求!
阅读全文