在C++中返回两个字符串
Returning two strings in C++
我正在为即将举行的C++考试解决练习。请考虑以下练习:
旅行社使用列表来管理其行程。对于每次旅行,该机构都会记录其出发点、到达点、距离和时间/持续时间
1) 定义表示行程列表的必要结构
2) 编写一个函数,给定整数 i 返回位置 i 的行程的出发点和到达点
定义结构很简单:
struct list{
char departure[100];
char arrival[100];
double distance;
double time;
list* next = NULL;
};
我的问题是功能。实际工作,找到第i次旅行很容易。但是我如何返回两个字符数组/字符串的出发和到达?如果这是我考试中的一道题,我会这样解决:
typedef list* list_ptr;
list_ptr get_trip(list_ptr head, const int i){
if(i<0 || head==NULL){
return NULL;
}
for(int k = 0; k<i;k++){
head = head->next;
if(head==NULL){
return NULL;
}
}
return head;
}
我返回一个指向列表元素的指针。然后必须打印出发和到达。我可以通过使用返回类型 char* 的函数轻松返回出发或到达。如何正确返回 2 个字符串? 我知道使用 std::tuple 有办法做到这一点,但我不能使用它,因为我们在讲座中没有它(我们只有真正基本的东西,直到上课)。
我是否正确,如果不使用其他库,则无法返回两个字符串?
干杯
好的,首先,您的list
类型存在一些问题。不要在C++中使用char[]
,除非你真的,真的必须这样做(注意:如果你认为你必须这样做,你可能错了)。C++提供了一个标准库,该库在其应用程序中非常出色(与C相比),您应该使用它。特别是,我说的是std::string
.您可能可以使用double
来表示距离和持续时间,尽管缺少单位意味着您将度过一段糟糕的时光。
让我们试试这个:
struct Trip {
std::string departure;
std::string arrival;
double distance_km;
double duration_hours;
};
现在你可以使用std::vector
、std::list
、std::slist
,或者滚动你自己的列表。让我们假设最后一个。
class TripList {
public:
TripList() = default;
// Linear in i.
Trip& operator[](std::size_t i);
const Trip& operator[](std::size_t i) const;
void append_trip(Trip trip);
void remove_trip(std::size_t i);
private:
struct Node {
Trip t;
std::unique_ptr<Node> next;
};
std::unique_ptr<Node> head;
Node* tail = nullptr; // for efficient appending
};
我会把这个的实现留给你。请注意,列表和行程是不同的概念,因此我们将编写不同的类型来处理它们。
现在你可以编写一个简单的函数:
std::pair<string, string> GetDepartureAndArrival(const TripList& list, std::size_t index) {
const auto& trip = list[index];
return {trip.departure, trip.arrival};
}
相关文章:
- 两个字符串在 c++ 中不相等
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 比较两个字符串后卡在无限循环中
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 使用XOR查找O(n)-解决方案中的两个字符串是否为变位符
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 我需要帮助在一个类中输入两个字符串并获取其输出
- 两个字符串之间的数学运算
- sscanf() 有两个字符串参数
- 我的字符串数组一次打印出前两个字符串
- 两个 c++ 字符串上的异或
- 函数返回两个字符串的第一个常用字符
- 目标是找到两个 c 字符串之间的公共前缀(必须使用特定的函数标头)
- 我需要在C++的两个字符串之间找到共同的前缀
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 给定两个字符串 S 和 T.确定与 T 相差最小的 S 子字符串?
- gtest:检查字符串是否等于两个字符串之一
- 交换两个字符串时访问正确的内存时,我遇到了分段错误
- 我可以在系统()中使用两个字符串吗?