Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
1 / 1 / 1
Регистрация: 02.02.2017
Сообщений: 102

Как заменить одни слэш на два слэша в Visual Studio?

28.02.2018, 00:12. Показов 5855. Ответов 33
Метки с (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть строка (путь файла) "C:\Users\Maxim\Desktop\1234.txt",пробле ма в том, что я получаю строку(тип char*) в которой один слэш, то есть если отображать, то получится без слэша. Как заменить одни слэш на два слэша в Visual Studio

Добавлено через 3 минуты
То есть я получаю из фу-ции строку
C++
1
char str[]="C:\Users\Maxim\Desktop\1234.txt"
, вот как добавить слэши и сделать вот так
C++
1
char str[]="C:\\Users\Maxim\\Desktop\\1234.txt"
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2018, 00:12
Ответы с готовыми решениями:

Кросскомпиляция: как в директивах include заменить обратный слэш ( \ ) на прямой слэш ( / ) ?
При подключении заголовков в винде понимает такой вариант: #include "CODE\Includes\Core\CMD\command_list.h" А Ubuntu ток такой:...

Как в строке заменить обратный слэш на двойной обратный слэш ?
Есть строка std::wstring str = L"C:\Program Files\Common Files\new folder\1.0"; Как в ней заменить обратный слэш на двойной...

Как заменить иконки в MS Visual Studio 11 (2012) ?
Я использую MS Visual Studio, начиная с версии 2005, но такого шизоидного "дизайна", какой я увидел, запустив в первый раз 2012-й, я никак...

33
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
28.02.2018, 01:43
Цитата Сообщение от Vixna Посмотреть сообщение
я получаю строку(тип char*) в которой один слэш
Каким образом создаётся такая строка? Не может быть такой Си-строки в памяти.

Добавлено через 2 минуты
Цитата Сообщение от Vixna Посмотреть сообщение
то есть если отображать, то получится без слэша.
И если не отображать, всё равно без слеша, потому что нет там его.
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
28.02.2018, 01:50
Когда вы получаете строку (массив char) из функции и там одиночные слэши, то и пусть они будут одиночными. Удваивать их надо только в коде программы внутри констант. А в памяти они все равно будут и должны быть одиночными. Другое дело, если вы выводите в файл код программы, который затем собираетесь компилировать. Но у вас, я думаю, не тот случай.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
28.02.2018, 01:52
Цитата Сообщение от palva Посмотреть сообщение
А в памяти они все равно будут и должны быть одиночными.
И какой у них код? 0х5С ?
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
28.02.2018, 01:55
Цитата Сообщение от nd2 Посмотреть сообщение
И какой у них код?
0x5С
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
28.02.2018, 02:00
Цитата Сообщение от palva Посмотреть сообщение
0x5С
Если бы было так, то ТС не писал бы:
Цитата Сообщение от Vixna Посмотреть сообщение
то есть если отображать, то получится без слэша
В том и проблема, что нет там в памяти (при такой строке) никаких одинарных обратных слешей.
Миниатюры
Как заменить одни слэш на два слэша в Visual Studio?  
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
28.02.2018, 02:08
nd2, Он получает строку из функции, как он пишет. Слэши там есть. Одиночные. Если их вывести на cout, они отобразятся.
Текстовая константа в программе, которая написана с одиночными слэшами внутри компьютера слэшей не содержит. Они и не отображаются при выводе.

Добавлено через 2 минуты
Вот что он пишет
Цитата Сообщение от Vixna Посмотреть сообщение
То есть я получаю из фу-ции строку
Непонятно только что это за строка, то что внутри кавычек или вся строка исходного кода.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
28.02.2018, 02:14
Согласен. Вот это объясни:
Цитата Сообщение от Vixna Посмотреть сообщение
то есть если отображать, то получится без слэша.
Если бы у него была строка с кодами 0х5С, то выводились бы одинарные слеши, и не было бы темы.

Добавлено через 4 минуты
Непонятно откуда он это взял:
Цитата Сообщение от Vixna Посмотреть сообщение
То есть я получаю из фу-ции строку
C++
1
char str[]="C:\Users\Maxim\Desktop\1234.txt"
Без ТС тут не разобраться.
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
28.02.2018, 02:17
Цитата Сообщение от nd2 Посмотреть сообщение
Вот это объясни:
Не могу объяснить. Если в массиве символов есть одиночный слэш, то он железно отобразится при выводе.
Чтобы записать такой текст на языке си, нужно использовать двойной слэш. Это другое дело. Но он хочет удвоить слэши программно, то есть внутри компьютера, а не в тексте программы. Если он их удвоит, то и выводиться будут двойные слэши.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
28.02.2018, 02:25
Цитата Сообщение от palva Посмотреть сообщение
Но он хочет удвоить слэши программно, то есть внутри компьютера, а не в тексте программы. Если он их удвоит, то и выводиться будут двойные слэши.
Правильно всё пишешь, но с этим не стыкуется:
Цитата Сообщение от Vixna Посмотреть сообщение
то есть если отображать, то получится без слэша
Что удваивать, если их нет? Интересно, как можно получить такую строку (как он написал) в памяти? Что-то ТС путает.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
28.02.2018, 11:46
Цитата Сообщение от Vixna Посмотреть сообщение
если отображать, то получится без слэша
Смотря каким образом отображать. Если, скажем, через ж неправильным способом printf(str) то, конечно, слеши будут потеряны. А вот если по-нормальному, printf("%s", str) / puts(str) но проблем с отображением слешей быть не должно. Что там с std::cout точно не знаю, вроде тоже без фокусов должно быть.
Функциям, работающим с файлами, нужна именно строка с одинарными.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
28.02.2018, 14:25
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
неправильным способом printf(str) то, конечно, слеши будут потеряны.
Так тоже правильно выводит, были бы слеши в памяти.
1
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
28.02.2018, 14:50
Верно. С другими опасностями неправильного применения printf спутал
0
1 / 1 / 1
Регистрация: 02.02.2017
Сообщений: 102
02.03.2018, 21:29  [ТС]
palva, nd2, COKPOWEHEU, я создаю переменную типа OPENFILENAME(стандартное диалоговое окно выбора и сохранения файлов), выбрав файл ,я получаю его путь(строку), после чего мне нужно открыть этот файл ofstream file(str, ios::binary | ios::in);, но проблема в то что строка содержит одинарные слэши и файл не открывается, если же двойные, то проблем нет
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
02.03.2018, 21:56
Цитата Сообщение от Vixna Посмотреть сообщение
я получаю его путь(строку)
Где? Как? Откуда видишь, что строка такая, как ты описал в первом посте?

Добавлено через 3 минуты
Чтобы в строке (в памяти) были одинарные обратные слеши (код 0х5C), в тексте кода должны быть двойные обратные, если в тексте кода написать обратные одинарные слеши, то в памяти их вообще не будет (и не каждый компилятор примет такую строку).

Добавлено через 2 минуты
Цитата Сообщение от Vixna Посмотреть сообщение
я создаю переменную типа OPENFILENAME(стандартное диалоговое окно выбора и сохранения файлов)
Это из какой области? WinAPI?
0
1 / 1 / 1
Регистрация: 02.02.2017
Сообщений: 102
02.03.2018, 22:01  [ТС]
nd2, Да я использую WinAPI

Добавлено через 24 секунды
nd2,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
of.lStructSize = sizeof(OPENFILENAME); //размер структуры
                of.hwndOwner = NULL; //родительское окно
                of.lpstrFilter = NULL; //фильтр
                of.lpstrFile = path_file; //текстовая строка, в которую будет записано имя открываемого файла и полный его путь
                of.nMaxFile = MAX_PATH; //максимальный путь - константа
                of.lpstrFileTitle = NULL; //буфер для хранения выбранного файла
                of.lpstrInitialDir = "c:\\"; //папка, с которой начинается обзор
                of.lpstrTitle = "Открытие файла\0"; //заголовок окна - его вы придумываете сами
                of.Flags = OFN_HIDEREADONLY; //флаги для открытия файла
 
                                             //Если открытие файла невозможно-выдём сообщение об ошибке
                if (!GetOpenFileName(&of))
                    MessageBox(0, "Ошибка открытия файла", "Error", MB_OK | MB_ICONSTOP);
                //Если открыть удалось, выводим в клиентскую область название файла и путь к нему
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
02.03.2018, 22:03
Цитата Сообщение от Vixna Посмотреть сообщение
Да я использую WinAPI
Может тогда и спрашивать в соответствующем разделе?
0
1 / 1 / 1
Регистрация: 02.02.2017
Сообщений: 102
02.03.2018, 22:05  [ТС]
nd2,
C++
1
char path_file[MAX_PATH] = " ";
, если выводить через MessageBox, то выведет со слэшами, а если записать в файл, то будут одинарные слэши

Добавлено через 1 минуту
nd2, А какая разница? Есть строка с одинарными слэшами(путь файла), надо заменить на двойные
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
02.03.2018, 22:09
Цитата Сообщение от Vixna Посмотреть сообщение
а если записать в файл, то будут одинарные слэши
А какие они должны быть, если они в памяти одинарные? Нужно, чтобы в текстовом файле были двойные, добавляй, после каждого слеша, ещё один. В чём проблема? Строку не можешь преобразовать?

Добавлено через 3 минуты
Цитата Сообщение от Vixna Посмотреть сообщение
А какая разница?
Разница в том, что писать нужно правильно. Не может быть в памяти вот этого:
Цитата Сообщение от Vixna Посмотреть сообщение
char str[]="C:\Users\Maxim\Desktop\1234.txt"
А ты написал, что, якобы, ты такую строку получаешь:
Цитата Сообщение от Vixna Посмотреть сообщение
То есть я получаю из фу-ции строку
Строка в техте кода и в памяти - не одно и тоже.
0
1 / 1 / 1
Регистрация: 02.02.2017
Сообщений: 102
02.03.2018, 22:10  [ТС]
nd2, Как я добавлю? Есть строка (C:\Users\ViksnaMax\Documents\Visual Studio 2015\Projects\Project7\Project7) , если я буду через цикл перебирать, то он тупо не увидит слэши, даже если использовать strlen, то она посчитает длину без слэшей
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2018, 22:10
Помогаю со студенческими работами здесь

Как связать два cpp файла в одном проекте (visual studio 2010)
Есть два программы: одна создает файл.txt, вторая читает из него данные и выводит на экран. создает файл #include <iostream> ...

Как открыть проект созданный в Visual Studio 2012 в Visual Studio 2008?
Нашел здесь же тему открытия Visual Studio 2012 в Visual Studio 2010 там написано так. Открыть файл проекта (.sln) с помощью блокнота и...

Как проект на visual studio 2012 открыть на visual studio 2008
Программа(курсовая) создана на 2012, надо показать и чтобы работала на 2008. Подскажите пожалуйста как решить данную проблему?

Как заставить ereg_replace менять два стоящих подряд обратных слэша или один прямой на один обратный?
Как заставить ereg_replace менять два стоящих подряд обратных слэша или один прямой на один обратный?

Как открыть файлы в формате visual studio .net 2003 в visual studio net 2002?
Возможно ли открыть файлы в формате visual studio .net 2003 в visual studio .net 2002 ?? Илт только update ?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru