Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
#1

Замена одного обратного слеша на 2 в строке текста (string) - C++

12.02.2013, 19:03. Просмотров 1542. Ответов 4
Метки нет (Все метки)

Привет всем.

Есть такое задание - заменить один слеш на 2 )

Например: C:\Program Files\Common Files\Adobe AIR\Versions\1.0
Хочу, чтобы было так: C:\\Program Files\\Common Files\\Adobe AIR\\Versions\\1.0

Сделал так вот:

C++
1
2
3
4
5
std::str = "C:\Program Files\Common Files\Adobe AIR\Versions\1.0";      
std::string slash = "\\";
  for (std::string::size_type n = str2.find("\\"); n != std::string::npos; n = str2.find("\\")) {
        str2.insert(n,slash);       
    }
Потом понимаю, что
C++
1
n = str2.find("\\"))
ищет заново с начала строки.
А как правильно тогда?


ЗЫ Понимаю, как это сделать при помощи boost::regex_replace
Но это какое-то кривое решение задачи)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 19:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена одного обратного слеша на 2 в строке текста (string) (C++):

Замена одного слова в строке на другое - C++
Как заменить read на study ? int main(int argc, char**argv) { string /*const*/ text1 = "I'm reading\n"; string /*const*/ text2...

Замена одного символа на другой в строке - C++
Условие такое: Дана символьная строка. Заменить все символы '!' точками, кроме первого встречающегося в строке, и вывести полученную строку...

Замена одного слова на другое в строке типа char - C++
Замена одного символа на другой в строке типа char - C++ Вообщем есть массив символов char str = "abcafgh"; нужно все "a" заменить...

Замена текста в строке - C++
Как можно в файле найти определенный ключ и заменить его значение (в "") на новое? Например: Key="Text1", найти Key и заменить текст...

Почему вместо обратного слеша "\" выводит "¥" - C++
Компилятор напрочь отказывается ставить обратный слеша В других программах все работает нормально. VS community 2015 Загружайте...

Замена одного слеша в строке не другой (дело в ненужном экранировании) - C++ Builder
Помогите заменить вот такую строку из едита "C:\Users\admin\Desktop" на следующую "C:/Users/admin/Desktop" А то я даже не могу цикл...

4
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
12.02.2013, 19:10 #2
Вторым параметром find может принимать позицию, с которой начинать поиск.
1
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
12.02.2013, 19:52  [ТС] #3
Цитата Сообщение от Vourhey Посмотреть сообщение
Вторым параметром find может принимать позицию, с которой начинать поиск.
Да, спасибо, упустил этот момент. Сделал так вот:

C++
1
2
3
4
5
6
std::string slash = "\\";
    for (std::string::size_type n = str2.find('\\'); (n != std::string::npos) && (n < str2.length()); str2.find('\\', n)) {
        str2.insert(n, slash);
        while (str2.at(n) == '\\')
         n++;
    }
0
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
13.02.2013, 11:56 #4
не мучайся, юзай так:
C++
1
StringReplace(my_string, "\", "\\", TReplaceFlags()<<rfReplaceAll);
ф-ция из библиотеки STL в строке my_string заменит "\" на "\\" (TReplaceFlags()<<rfReplaceAll означает замену всех "\" на "\\")
0
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
13.02.2013, 16:34  [ТС] #5
Цитата Сообщение от igor001 Посмотреть сообщение
не мучайся, юзай так:
C++
1
StringReplace(my_string, "\", "\\", TReplaceFlags()<<rfReplaceAll);
ф-ция из библиотеки STL в строке my_string заменит "\" на "\\" (TReplaceFlags()<<rfReplaceAll означает замену всех "\" на "\\")
Thanx, но как оказалось, это вообще не нужно - замена нужна, только если в самом файле объявляешь переменную, из серии:
C++
1
2
std::string path2file = "C:\\Program Files\\MyFolder";
ifstream ips (path2file, std::ios_base::in);
А если строка считывается из файла, а потом присваевается переменной типа string - то и с одним слешем все норм)

А вот это вот:
C++
1
StringReplace(my_string, "\", "\\", TReplaceFlags()<<rfReplaceAll);
мне бы вряд ли пригодилось, у меня консольное приложение, которое считывает путь к каталогу из текстового файла. StringReplace - это, похоже, какой-то метод класса CString, или что-то такое из MFC.

Добавлено через 45 минут
PS Посмотрел StringReplace функцию - это, по ходу, борландовская какая-то фишка.
0
13.02.2013, 16:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2013, 16:34
Привет! Вот еще темы с ответами:

Экранирование обратного слеша - PHP
Всем привет! Объясните, пожалуйста, почему когда я пишу: echo quotemeta('\\server\test'); я получаю: Но когда делаю: echo...

Замена одного символа в String - C#
Можно ли в C# воздействовать на отдельные символы строки (string). На следующий код компилятор ругается: string str = &quot;Hello&quot;; ...

Замена одного текста на другой - JavaScript
Есть текст &lt;li&gt;1~~2~~3&lt;/li&gt; Как заменить ~~ на li и закрыть его же

Интеллектуальная замена слеша - PHP
Требуется заменить слеш на пробел, однако заменять следует не всякий слеш, а только если слева и справа от слеша больше четырех цифр или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru