阅读并打印礼物

  • 本文关键字:礼物 打印 c++
  • 更新时间 :
  • 英文 :


程序应包括以下内容:

•一种用于存储名为Gift_Bag_Type的礼品袋的数据类型。数据类型应该能够最多可储存15份礼物,每份礼物包含一份string

•具有Gift_Bag_Type参数的read_gifts子程序。子程序应允许用户输入最多15礼物以存储在参数。用户通过输入"0"结束输入;CCD_ 7";或通过输入15礼物。

•具有Gift_Bag_Type参数gift_bagcharacter参数letterprint_gifts_containing子程序。

子程序应打印来自CCD_ 14的所有礼物作为内容标志。如果不包括礼物字母,";CCD_ 15";应打印。

这就是它在终端中的样子:

Enter gifts in bag:
car
table
tv
acorn
tools
perfume
apple
DONE
Enter letter: e
Gifts containing e: table, perfume, apple

Enter gifts in bag:
DONE
Enter letter: a
Gifts containing a: none

我在制作另一个子程序print_gifts_containing时遇到问题。我想我必须有一个for loop,在for循环中,我有一个if statement,但我真的不知道如何执行它,这就是为什么我在这里问这个问题,因为我需要帮助。关于如何完成这个程序有什么帮助吗?

请注意,不应修改我的int main。只有我的subprograms。我只评论了一件事,这样我的程序就可以编译了。

这是我迄今为止的代码:

#include <iostream>
#include <string>
#include <cctype>
#include <vector>
using namespace std;
struct Gift_Bag_Type {
vector<string> gifts;
};
//function to read gifts of input gift    
void read_gifts(Gift_Bag_Type & gift_bag) {
string line;

while ((line != "DONE") && (gift_bag.gifts.size() != 14)) {
getline(cin, line);
gift_bag.gifts.push_back(line);
}  
}   
void print_gifts_containing (Gift_Bag_Type & gift_bag,
char const letter) {
for (int i {}; i < gift_bag.gifts.size(); ++i) {
//if-statement here
}
}
int main() {
Gift_Bag_Type gift_bag;
char letter;
cout << "Enter gifts in bag: " << endl;
read_gifts(gift_bag);
cout << "Enter letter: ";
cin.get(letter);
cout << "Gifts containing " << letter << ": ";
//print_gifts_containing(gift_bag, letter);
return 0;
}

看起来你在寻找std::string::find,它有一个重载,可以让你找到字符串中第一个出现的字符。如果找不到字符,则返回npos

一个简单的例子:

#include <string>
#include <iostream>
int main() {
std::string foo = "hello";
if (foo.find('e') != std::string::npos) {
std::cout << "Found 'e'" << std::endl;
}
}

此外,当您对字符串的vector进行迭代时,您的循环工作过于繁重。C++让你努力工作。如果可以的话,让它为你做同样的事情。

for (auto &s : gift_bag.gifts) {
...
}

最新更新