将两个字符串与逗号分隔值进行比较

时间:2011-05-04 13:38:14

标签: c++

有没有什么方法可以比较两个用逗号分隔值的字符串?

说清楚:

string S1 = "a,b,c,d,e"
string S2 = "c,d"
string S3 = "a,b,e"          //where string S3 is got by subtracting S2 from S1 (S1 - S2)

是否可以使用某些功能执行此操作?

2 个答案:

答案 0 :(得分:9)

如果我得到你想要的东西,你想要得到不在两个字符串中的元素。

我将如何做到这一点:

  1. 使用,作为分隔符拆分a和b。
  2. 将结果存储在两组(例如std::set
  3. 计算这两组的差异(例如,使用std::set_difference
  4. 使用,
  5. 将每个元素粘合在一起,将结果集转换为字符串

答案 1 :(得分:3)

我猜这是一个家庭作业,所以你不会从我那里得到任何代码。

如果我理解这个问题,那你就是在谈论“设定差异”,而不是比较;也就是说,找到一组中不在另一组中的元素。要做到这一点,你需要

  1. 表示集合的数据结构。您可能被允许使用std::set(或multiset),或者您可能需要自行设计。
  2. 一个函数或构造函数,用于从字符串中读取值,查找将它们分开的逗号。如果您被允许使用库,那么std::stringstream可能会有用。
  3. 计算两个集合之间差异的函数(通过从另一个集合中删除一个集合,或者使用正确的成员创建一个新集合)。同样,如果您可以使用该库,请查看std::set_difference
  4. 将集合转换为字符串的函数(2中函数的反函数)以给出最终结果。与2中一样,std::stringstream会很有用。