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

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

28.02.2018, 00:12. Показов 5845. Ответов 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,929
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,929
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
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru