第一题
#include <iostream>
#include <cstring>
int main()
{
std::string max_str, tmp_str;
while(true) {
std::cout << "please input a string" << std::endl;
std::getline(std::cin, tmp_str);
if(tmp_str.empty()){
break;
}
if(tmp_str.size() > max_str.size()) {
max_str = std::move(tmp_str);
}
}
std::cout << "max_str=" << max_str << std::endl;
return 0;
}
第二题
#include <iostream>
#include <fstream>
#include <cstring>
int main()
{
std::ifstream ifs;
// 打开文件
ifs.open("data.txt",std::ios::in);
if (!ifs.is_open())
{
std::cout << "read fail." << std::endl;
return -1;
}
std::string tmp_str;
while(true) {
std::getline(ifs, tmp_str);
if(tmp_str.empty()){
break;
}
// 以李明开头,且包含空格 防止前缀找错
if(tmp_str.rfind("李明 ", 0) == 0) {
// 找到了
std::cout << "str=" << tmp_str << std::endl;
}
}
return 0;
}
第三题
#include <iostream>
#include <cstring>
#include <vector>
#include <ctime>
#include <map>
struct Item {
std::string op;
std::string name;
int money;
time_t t;
Item(const std::string& _op, const std::string& _name, int _money): op(_op),name(_name), money(_money), t(time(0)) {
}
Item(const Item& item) {
op = item.op;
name = item.name;
t = item.t;
}
Item(Item&& item) {
op = std::move(item.op);
name = std::move(item.name);
t = item.t;
}
};
class Bank {
public:
void create(const std::string& name, int money){
_push("create", name, money);
}
void push(const std::string& name, int money){
_push("push", name, money);
}
bool take(const std::string& name, int money){
auto it = m_moneys.find(name);
if(it == m_moneys.end()) {
// 没有找到账号
return false;
}
if(it->second < money) {
// 钱不够
return false;
}
it->second -= money;
_push("take", name, money);
}
void list() {
time_t t = time(0) - (30*24*60*60); // 一个月前
std::cout << "时间\t姓名\t操作\t金额" << std::endl;
for(auto it = m_items.rbegin(); it != m_items.rend() && it->t > t; ++it) {
std::cout << it->t << "\t" << it->name << "\t" << it->op << "\t" << it->money << std::endl;
}
}
private:
void _push(const std::string& op, const std::string& name, int money){
m_items.push_back(Item(op, name, money));
auto it = m_moneys.find(name);
if(it != m_moneys.end()) {
it->second += money;
} else {
m_moneys.insert(std::pair(name, money));
}
}
private:
// 交易记录暂时存在内存中
std::vector<Item> m_items;
std::map<std::string, int> m_moneys;
};
第四题,应该是虚继承吧,很少用
class Peason {
public:
const std::string& name();
private:
std::string m_name;
};
class Teacher: virtual public Peason{
public:
int year_old();
void teach();
private:
int m_year_old;
};
class Student : virtual public Peason {
public:
void student_id();
private:
int m_student_id;
};
class Graduate: virtual public Teacher, virtual public Student {
};