C ++ - Получите «разницу» из 2 струн, таких как gitC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C ++ - Получите «разницу» из 2 струн, таких как git

Сообщение Anonymous »

В настоящее время я работаю над проектом, который включает в себя консольную программу Win32 на моем ПК с Windows 10 и приложение для моего мобильного телефона Windows 10. Речь идет о контроле мастера и аудио сеанса на моем ПК над приложением на моем Windows Phone. < /P>

«Маленькая» проблема, которую я имею сейчас, состоит в том, чтобы получить «разницу» между 2 строками. < /P>

Давайте возьмем эти 2 строки, например: < /p>

std::string oldVolumes = "MASTER:50:SYSTEM:50:STEAM:100:UPLAY:100";
std::string newVolumes = "MASTER:30:SYSTEM:50:STEAM:100:ROCKETLEAGUE:80:CHROME:100";
< /code>

Теперь я хочу сравнить эти 2 строки. Допустим, я взорву каждую строку в вектор с помощью ":" как разделитель (у меня есть функция с именем взорванием, чтобы разрезать данную строку делимителем и записать строку до вектора). < /P>

достаточно хорошо. Но, как вы можете видеть, в старой строке есть uplay со значением 100, но в новой строке отсутствует. Кроме того, есть 2 новых ценностях (RocketLeague и Chrome), которые отсутствуют в старом. Но не только «аудиосессии /имена» различны, но и значения тоже разные. < /P>

То, что я хочу сейчас, для каждого сеанса, который находится в обеих струнах (например, мастер и систему), чтобы сравнить значения, и если новое значение отличается от старого, я хочу добавить это изменение в другую строку, например: < /p>

std::string volumeChanges = "MASTER:30"; // Cause Master is changed, System not
< /code>

Если в старой строке есть сеанс, но не в новой, я хочу добавить: < /p>

std::string volumeChanges = "MASTER:30:REMOVE:UPLAY";
< /code>

Если в новом есть сеанс, который отсутствует в старой строке, я хочу добавить его так: < /p>

std::string volumeChanges = "MASTER:30:REMOVE:UPLAY:ADD:ROCKETLEAGUE:ROCKETLEAGUE:80:ADD:CHROME:CHROME:100";
< /code>

Строка VolumeChanges просто для того, чтобы показать вам, что мне нужно. Я постараюсь сделать лучше после этого. < /P>

У вас есть идеи о том, как реализовать такое сравнение? Мне не нужен конкретный пример кода или что -то в этом роде, просто некоторые идеи о том, как я мог бы сделать это в теории. По крайней мере, это как git. Если вы внесете изменения в текстовый файл, вы видите в красном удаленном тексту и зеленым. Что -то похожее на это, только с струнами или векторами струн.

Подробнее здесь: https://stackoverflow.com/questions/457 ... s-like-git
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»