gpt4 book ai didi

c++ - 根据某个字符串更改程序中的一个单词

转载 作者:搜寻专家 更新时间:2023-10-30 23:55:15 24 4
gpt4 key购买 nike

所以我正在编写一个程序,我想要一些用户输入。假设我们定义了一个 int;称为年龄。如果用户是成年人(比如 30 岁及以上),我希望程序将所有非正式的“你”换成“正式的”你(许多语言,如法语,有这种区别,想想 vous vs tu)在荷兰语中,“u”是正式的,而不是“je”。

最简洁的方法是什么?我现在有这个(使用今天的日期,2015 年 9 月 18 日):

string abc;

if (2015 - year of birth > 30) {
abc = "u";
}
else {
abc = "je";
}
if (2015 - year of birth == 30) {
if ( September - month of birth > 0) {
abc = "u";
}
else {
abc = "je";
}
}
if (2015 - year of birth == 30) {
if (September - month of birth == 0) {
if (18 - day of birth >= 0) {
abc = "u";
}
else {
abc = "je";
}
}
}

我很确定它可以工作,但可能不是最理想的。我该如何改进?

最佳答案

我假设您可能真的需要与今天的日期进行比较,所以使用 std::chronolocaltime 来获取它- 后者将日期解压为 std::tm对你来说:请在链接文档中注意年份和月份分别基于 1900 和 0。

std::tie将值分组到 tuple 中以便于比较很方便,这样,如果最左边的值相等,它会考虑右边的值,依此类推。

auto now = std::chrono::system_clock::now();
auto my_time_t = std::chrono::system_clock::to_time_t(now);
std::tm* p = std::localtime(&my_time_t);

string abs = std::tie(p->tm_year + 1900 - 30, p->tm_mon + 1, p->tm_mday) >
std::tie(year_of_birth, month_of_birth, day_of_birth)
? "je" : "u";

如果您实际上不需要今天的日期,只需放弃前 3 行并对 p->tm_xxx + ... 值进行硬编码。

关于c++ - 根据某个字符串更改程序中的一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com