Вопрос по c++ –  было бы полезно.

0

ли способ, с помощью которого мы можем сравнить две строки, имеющие значения, разделенные запятыми?

Чтобы было понятно:

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)

Возможно ли сделать это с какой-то функцией?

@Matthieu Глядя дальше, я нашел комментарий Джеффа Этвуда, который не говорит, но подразумевает, что его можно / нужно использовать. Моя главная проблема - путаница в сообществе, которая может оттолкнуть нового участника, пытающегося понять. Мой самый первый вопрос был отредактирован, чтобы снять метку, и мне сказали не использовать его. @vidhya извини, что украл твой пост по касательной. Я перестану бить эту лошадь. Matt
Тег домашней работы, кажется, не рекомендуется. Видетьmeta.stackexchange.com/questions/10811/... Matt
задавая такой вопрос, вы должны сообщить нам, что вы предприняли, чтобы мы могли указать на недостатки в вашем рассуждении или алгоритме. Вы не учитесь, если не пытаетесь. Matthieu M.
Пожалуйста, пометьте домашнее задание тегом домашнего задания, я также не могу сказать, что вы пытаетесь спросить здесь. Grammin
@Matt: не совсем, произвольная повторная маркировка, основанная на чувстве, не рекомендуется. Вместо этого лучше спросить ОП, так ли это, чтобы ответы могли быть адаптированы. Matthieu M.

Ваш Ответ

2   ответа
9

что вы хотите, вы хотите получить элементы, которых нет в обеих строках.

Вот как бы я это сделал:

Разделите a и b, используя, в качестве разделителя.Сохраните результат в двух наборах (std::set например)Вычислить разницу этих двух наборов (например, используяstd::set_difference)Преобразовать полученный набор в строку, склеив каждый элемент, используя,
+1 за руководство и оставление ему реальной работы davka
@vidhya Извини, но я не сделаю твою домашнюю работу за тебя. Включите Google-Fu, как и любой программист. Etienne de Martel
Можете ли вы дать мне пример кода ...? vidhya
3

что это домашнее задание, поэтому вы не получите от меня никакого кода.

Если я понимаю вопрос, вы говорите о «разности установок», а не о сравнении; то есть поиск элементов одного набора, которых нет в другом. Для этого вам понадобится

Структура данных для представления набора. Вам может быть разрешено использоватьstd::set (или жеmultiset), или вам может понадобиться создать свой собственный.Функция или конструктор для чтения значений из строки в поисках запятых, разделяющих их. Если вам разрешено использовать библиотеки, тоstd::stringstream может быть полезным.Функция для вычисления разницы между двумя наборами (либо путем удаления одного набора из другого, либо создания нового набора с правильными элементами). Опять же, если вы можете использовать библиотеку, посмотрите наstd::set_difference.Функция для преобразования набора в строку (обратная функция в 2) для получения окончательного результата. Как и в 2,std::stringstream было бы полезно.

Похожие вопросы