2011-06-06 112 views
2

可能重複:
comparing two strings with comma seperated valuesC++:比較兩個字符串

我在C++中工作,在那裏我有兩個字符串:

string str1 = "1,4,8,", 
     str2 = "4,1,8,"; 

兩個字符串包含逗號分隔值。現在我只想檢查str1中的所有元素是否也存在於str2中,而不管它們的位置。有沒有直接的方法來檢查這個?我是否需要爲此編寫自定義代碼?

+2

爲什麼用字符串表示這些數據?爲什麼不是'std :: set '? – GManNickG 2011-06-06 04:59:58

+0

我會將它們分成標記,對它們進行排序,然後檢查所有元素是否相同。 – 2011-06-06 05:17:02

+1

這些是以逗號結尾的字符串; CSV不會在後面的逗號後面。 – 2011-06-06 05:18:24

回答

9

就C++而言,這些字符串只是字符序列。如果您對這些字符應用了含義(例如「逗號分隔值」),那麼您必須編寫一些代碼來提取數據並處理它。

我會做這樣的事情:

  • 分裂的字符串「」
  • 的數字每個序列轉換爲整數(跳過空元素)
  • 插入這些整數轉換爲一組(一個用於每個輸入字符串)
  • 比較組

它是由你來決定使用什麼樣的整數。

+0

集合的問題在於它們必須是唯一的(或者至少每個集合只包含唯一值)。他可能還希望確保兩個列表都具有相同數量的重複項,在這種情況下,普通的'std :: set '將不起作用,因爲它不會跟蹤計數。 – 2011-06-06 05:08:12

+0

@Merlyn:公正的電話,所以@Jame:如果這適用於你嘗試'std :: map ',即從關鍵到計數。 – 2011-06-06 05:31:14

+0

@Tony:'std :: multiset'有什麼問題? – 2011-06-06 10:48:55

0

是的,你需要編寫自定義代碼,雖然不是很多。一旦你找出算法,你可以在這裏發表,如果你有進一步的問題,如何實現每個部分。