cpp while使用案例
时间: 2024-10-08 18:23:03 浏览: 7
`while`循环是C++中的一种控制流语句,用于当某个条件为真时重复执行一段代码。下面是一个简单的`while`循环使用案例,它会计算从1加到指定数值n:
```cpp
#include <iostream>
using namespace std;
int main() {
int n, sum = 0;
// 使用while循环计算从1加到n的和
cout << "Enter a number: ";
cin >> n;
while (sum < n) { // 当sum小于n时继续循环
sum += 1; // 每次迭代增加sum的值
cout << sum << " "; // 打印当前和
}
cout << endl << "Sum of numbers from 1 to " << n << " is: " << sum << endl;
return 0;
}
```
在这个例子中,程序会持续询问用户输入一个数字,然后一直加1直到达到或超过该数字,最后输出累加的结果。
相关问题
Cpp notify_all 和 notify_one使用实例
notify_all 和 notify_one 都是 C++ 中的条件变量(condition variable)的成员函数,用于唤醒等待线程。
下面是一个简单的使用实例:
```
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
bool ready = false;
void worker(int id)
{
std::unique_lock<std::mutex> lock(mtx);
while (!ready) {
std::cout << "Worker " << id << " is waiting..." << std::endl;
cv.wait(lock);
}
std::cout << "Worker " << id << " is working..." << std::endl;
}
void notifier()
{
std::unique_lock<std::mutex> lock(mtx);
ready = true;
cv.notify_all();
}
int main()
{
std::thread t1(worker, 1);
std::thread t2(worker, 2);
std::thread t3(worker, 3);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::thread t4(notifier);
t1.join();
t2.join();
t3.join();
t4.join();
return 0;
}
```
上面的代码创建了三个 worker 线程和一个 notifier 线程。worker 线程会等待 ready 变量为 true,notifier 线程会将 ready 变量设置为 true,并通过 notify_all 函数唤醒所有等待线程。
运行上面的代码,输出结果如下:
```
Worker 1 is waiting...
Worker 2 is waiting...
Worker 3 is waiting...
Worker 3 is working...
Worker 2 is working...
Worker 1 is working...
```
可以看到,三个 worker 线程都等待在条件变量上,直到 notifier 线程唤醒它们,并且它们同时开始工作。如果将 notify_all 改为 notify_one,那么只会唤醒一个等待线程,输出结果会有所不同。
用cpp代码写一个注册案例
以下是一个简单的注册案例,使用了文件存储用户信息:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 用户信息结构体
struct UserInfo {
string username;
string password;
int age;
};
// 存储用户信息的文件路径
const string FILE_PATH = "user_info.txt";
// 读取所有用户信息
vector<UserInfo> readAllUsers() {
vector<UserInfo> users;
ifstream fin(FILE_PATH);
string line;
while (getline(fin, line)) {
UserInfo user;
int pos = line.find(',');
user.username = line.substr(0, pos);
line = line.substr(pos + 1);
pos = line.find(',');
user.password = line.substr(0, pos);
line = line.substr(pos + 1);
user.age = stoi(line);
users.push_back(user);
}
fin.close();
return users;
}
// 添加新用户
void addUser(const UserInfo& user) {
ofstream fout(FILE_PATH, ios::app);
fout << user.username << "," << user.password << "," << user.age << endl;
fout.close();
}
// 检查用户名是否已存在
bool isUsernameExists(const string& username) {
vector<UserInfo> users = readAllUsers();
for (const auto& user : users) {
if (user.username == username) {
return true;
}
}
return false;
}
// 注册新用户
void registerUser() {
string username, password;
int age;
// 获取用户输入
cout << "请输入用户名:";
cin >> username;
if (isUsernameExists(username)) {
cout << "该用户名已存在,请重新输入!" << endl;
return;
}
cout << "请输入密码:";
cin >> password;
cout << "请输入年龄:";
cin >> age;
// 创建新用户并保存
UserInfo user = {username, password, age};
addUser(user);
cout << "注册成功!" << endl;
}
int main() {
registerUser();
return 0;
}
```