这些是方向:
使用
getline()
将一行用户输入转换为字符串。输出线。 (3 分)
例如:
Enter text: 如果我去,请输入 IDK。今天是我 BFF 的生日。
你输入了:如果我去的话,我知道。今天是我 BFF 的生日。在字符串中搜索(使用
find()
)常见的缩写并打印每个找到的缩写及其解码含义的列表。 (3 分)
例如:
Enter text: 如果我去,请输入 IDK。今天是我 BFF 的生日。
你输入了:如果我去的话,我知道。今天是我 BFF 的生日。
支持这些缩写:
BFF -- 永远最好的 friend
IDK -- 我不知道
JK -- 开个玩笑
TMI -- 信息太多
TTYL -- 稍后与您交谈
我一直在尝试编写代码并在这方面获得 6/6 分,但我最终获得了 3/6。
#include <iostream>
#include <string>
using namespace std;
int main() {
string input;
cout << "Enter text: ";
getline(cin, input);
cout << endl <<"You entered: " << input << endl;
if (input.find("BFF") && input.find("IDK"))
{
cout << "BFF: best friend forever" << endl;
cout << "IDK: I don't know" << endl;
}
if (input.find("JK") && input.find("TMI") && input.find("TTYL"))
{
cout << "JK: just kidding" << endl;
cout << "TMI: too much information" << endl;
cout << "TTYL: talk to you later" << endl;
}
return 0;
}
我没有得到最后 3 分:
比较输出 0/2
输入 IDK如果我去的话。今天是我 BFF 的生日。
你的输出
输入文字:
您输入:IDK if I'll go。今天是我 BFF 的生日。
BFF:永远最好的 friend
IDK:我不知道
JK:开个玩笑
TMI:信息太多
TTYL:待会再谈
预期输出 输入文字:
您输入:IDK if I'll go。今天是我 BFF 的生日。
BFF:永远最好的 friend
IDK:我不知道
比较输出 0/1
输入 不错的照片,TMI 哈哈 JK。 TTYL
你的输出
输入文字:
您输入了:漂亮的照片,TMI 哈哈 JK。 TTYL
BFF:永远最好的 friend
IDK:我不知道
预期输出
输入文字:
您输入了:漂亮的照片,TMI 哈哈 JK。 TTYL
JK:开个玩笑
TMI:信息太多
TTYL:待会再谈
最佳答案
显然,您的函数调用在某些点上的计算结果为真,而在其他点上为假。 Find() 返回找到的子串第一个字符的位置,如果没有找到这样的子串,则返回 npos = -1。真语句是计算结果为非零数的语句。 False 的计算结果为 0。
在您的比较输出 0/2 中,所有内容都计算为非零值。因此,一切都被打印出来。在 0/1 中,一个值必须是 0。BFF 和 IDK 打印,因为它们是 -1,而其余的则不打印。 (只是我的 2¢,也许有人可以确认您代码中的值的计算结果)
关于c++ - 需要有关此文本消息解码器 (C++) 练习的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40354610/