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

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

28.02.2018, 00:12. Показов 5985. Ответов 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,430
02.03.2018, 22:17
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Vixna Посмотреть сообщение
Есть строка (C:\Users\ViksnaMax\Documents\Visual Studio 2015\Projects\Project7\Project7) , если я буду через цикл перебирать, то он тупо не увидит слэши, даже если использовать strlen, то она посчитает длину без слэшей
С чего ты это взял? Ещё раз: если ты получаешь (откуда-то) Си-строку с одинарными обратными слешами, то в памяти находится такая строка:
C:\Users\ViksnaMax\Documents\Visual Studio 2015\Projects\Project7\Project7
, поэтому все всё увидят. Возьми адрес строки и посмотри, что лежит в памяти (и мне покажи).

Добавлено через 3 минуты
На консоль можешь вывести path_file ? Да и зачем, ты сам написал, что в файл записывается так:
Цитата Сообщение от Vixna Посмотреть сообщение
а если записать в файл, то будут одинарные слэши
Тогда:
Цитата Сообщение от nd2 Посмотреть сообщение
А какие они должны быть, если они в памяти одинарные?
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,931
Записей в блоге: 5
02.03.2018, 22:21
Цитата Сообщение от Vixna Посмотреть сообщение
но проблема в то что строка содержит одинарные слэши и файл не открывается
Не верю, что проблема в этом. Может быть путаница с UNICODE? Если бы строка содержала двойные слэши, то тем более бы не открывалось.
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
02.03.2018, 22:23
nd2, palva, Vixna, не ругайтесь символ в памяти, это всего лишь цифра, последовательность бит.
Когда вы пишете это:
C++
1
char str[]="C:\Users\Maxim\Desktop\1234.txt"
то слешь в строку (память) не попадает, т.к. его удаляет компилятор рассматривая его как спецсимвол. Но в памяти может храниться символ 0x5c который соответствует слешу.
когда вы пишите char str[] = "\\"; то вы сообщаете компилятору, первым спецсимволом \ что последующий \ нужно рассматривать не как спецсимвол, а как обычный и запихнуть его в строку.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
02.03.2018, 22:28
Avaddon74, это к чему написано? Об этом уже тут было всё сказано.

Добавлено через 1 минуту
Vixna, у тебя сначала было: файл не отрывается, потом: в файл не так записывается (с одинарными, а нужны двойные). Так что на самом деле происходит?
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
02.03.2018, 22:30
nd2, а мне наоборот показалось что вы говорите о разном не понимая друг друга, ну раз у вас полный консенсус, тогда извините за вмешательство с моей стороны
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
02.03.2018, 22:34
Цитата Сообщение от Avaddon74 Посмотреть сообщение
а мне наоборот показалось что вы говорите о разном не понимая друг друга,
Мы (не ТС), как раз говорили о том, что и ты написал. Тему с начала читал?
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,931
Записей в блоге: 5
02.03.2018, 22:36
Ну проблем то куча! в нужный момент остановиться и посмотреть переменную path_file отладчиком, или сделать дамп, сюда выложить. Тогда же можно удостовериться что кодировка не UNICODE или наоборот UNICODE, если она нужна.

Добавлено через 1 минуту
Посмотреть, как выглядят русские буквы в пути...
Но двойные слэши то здесь причем? Это фантазии не на ту тему.
1
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
02.03.2018, 22:38
nd2, сначала, я и пытался объяснить ТСу по своему и вам не советовал спорить, а понять, что именно он не может понять
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,931
Записей в блоге: 5
02.03.2018, 22:40
Цитата Сообщение от Avaddon74 Посмотреть сообщение
что именно он не может понять
Здесь не в том, что он может понять. Он не хочет (или не умеет) посмотреть те вещи, которые надо посмотреть в первую очередь.
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
02.03.2018, 22:41
nd2, Ааа, вы подумали что я именно вас с palva учу? нет конечно ТСу объяснял ещё раз
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
03.03.2018, 04:15
Vixna, вот код. Что у тебя дальше не получается сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    OPENFILENAME of;
    char path_file[MAX_PATH] = "";
    
    ZeroMemory( &of , sizeof(of));
    of.lStructSize = sizeof(OPENFILENAME); //размер структуры
    of.hwndOwner = NULL; //родительское окно
    of.lpstrFilter = NULL; //фильтр
    of.lpstrFile = path_file; //текстовая строка, в которую будет записано имя открываемого файла и полный его путь
    of.nMaxFile = MAX_PATH; //максимальный путь - константа
    of.lpstrFileTitle = NULL; //буфер для хранения выбранного файла
    of.lpstrInitialDir = NULL; //папка, с которой начинается обзор
    of.lpstrTitle = "Открытие файла\0"; //заголовок окна - его вы придумываете сами
    of.Flags = OFN_HIDEREADONLY; //флаги для открытия файла
    
    if (GetOpenFileName(&of))
        MessageBox ( NULL , path_file , "File Name" , MB_OK);
    else
        MessageBox(0, "Ошибка открытия файла", "Error", MB_OK | MB_ICONSTOP);
    
    int n = strlen(path_file); // проверим количество символов (ты пишешь, что слеши не считает)
    char str[MAX_PATH];
    sprintf(str, "%d", n);
        MessageBox(0, str, "", MB_OK | MB_ICONSTOP);
    return 0;
}
Это?
Цитата Сообщение от Vixna Посмотреть сообщение
после чего мне нужно открыть этот файл ofstream file(str, ios::binary | ios::in);, но проблема в то что строка содержит одинарные слэши и файл не открывается
Добавляю в код:
C++
1
2
3
4
5
6
7
8
    std::ofstream file(path_file, std::ios::binary);
    if (!file)
    {
        MessageBox(0, "Ошибка открытия файла", "Error", MB_OK | MB_ICONSTOP);
        return 0;
    }
    else
        MessageBox(0, "Файл открылся", "Done", MB_OK | MB_ICONSTOP);
Файл открывается для записи.
0
 Аватар для COKPOWEHEU
4068 / 2702 / 433
Регистрация: 09.09.2017
Сообщений: 12,019
03.03.2018, 10:08
Может просто заменить обратные слеши на прямые?
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,931
Записей в блоге: 5
03.03.2018, 14:07
Может файл помечен "только для чтения"...
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
03.03.2018, 16:12
Цитата Сообщение от palva Посмотреть сообщение
Может файл помечен "только для чтения"...
Или прав не хватает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.03.2018, 16:12

Как связать два 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 ?


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru