Тема: Шлях до файла (проблема з не латинськими символами та з "\")

Коли я пишу шлях до файлу і там зустрічаються українські літери (наприклад F:\Файл.cpp) програма не працює. А також в мене була проблема із знак "\" (потрібно "\\") тому я зробив функцію void Address_file(char *file_path). яка додає до слеша ("\") ще один тобто так F:\Файл.cpp -> F:\\Файл.cpp.
1)Як зробити так щоб шлях з українськими літерами робив (тобто програма робила)
2)Можна замінити функцію void Address_file(char *file_path) якимсь службовим словом що додає до слеша ще один

#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;

void Address_file(char *file_path)
{
    int i = 0;
    char letter;
    while ((letter = getchar()) != '\n')
    {
        if (letter == '\\')
        {
            file_path[i] = letter;
            i++;
        }
        file_path[i] = letter;
        i++;
    }
    file_path[i] = '\0';
}

int main()
{
    char file_path[100];
    char open_file[100];
    cout << "Enter the path to the file ->";
    Address_file(&file_path[0]);
    ifstream file(file_path);
    do
    {
        file.getline(open_file, 100);
        cout << open_file << endl;
    } while (!file.eof());
    getch();
    return 0;
}

2

Re: Шлях до файла (проблема з не латинськими символами та з "\")

Betterthanyou написав:

програма не працює

Це не опис проблеми. Будете писати таке - буду радити увімкнути комп'ютер (ну а що, якщо комп'ютер не увімкнено - програма працювати ж не може).
"Проблема зі слешем" - це не проблема, це фіча, і не роботи з файлами, а мови C++. Якщо ви вводите текст, всі слеші там зберігаються як є, якщо ви пишете рядок "\abc" в коді - слеш робить щось інше.

Подякували: Betterthanyou1

3 Востаннє редагувалося Betterthanyou (14.07.2014 19:12:37)

Re: Шлях до файла (проблема з не латинськими символами та з "\")

Як описати проблему коли після того як я ввів F:\Файл.cpp нічого не відбулося, програма просто зациклилася (при натисканні на клавіші не закривається, а має бо в мене стоїть getch();), а якщо той самий файл перейменувати так 1.cpp то програма виводить на консоль вміст файла (так і потрібно)

4

Re: Шлях до файла (проблема з не латинськими символами та з "\")

koala я розумію що робить слеш, я маю на увазі що коли прописується шлях то пишеться один слеш а в c++ потрібно писати два слеша (так як перший для команди) тому я зробив функцію що перетворює звичайний шлях у шлях таки що сприймає c++. Я хотів дізнатися чи є команда яка це робить тобто замінити функцію Address_file у моїй програмі, якщо звичайно є така команда.

5

Re: Шлях до файла (проблема з не латинськими символами та з "\")

Стандартної нема, бо вона непотрібна. Якщо ви без цієї функції запустите свою програму, вона так само відкриє файл. А у вас проблема з кодуванням - спробуйте вивести те, що написали, і побачите.
Ну і почитайте http://replace.org.ua/topic/2021/

Подякували: Betterthanyou1

6

Re: Шлях до файла (проблема з не латинськими символами та з "\")

Я вже найшов як відкрити файл шлях до якого із українськими літерами в бібліотеці #include <windows.h> є SetConsoleCP(1251); ось і все просто в функції main прописати SetConsoleCP(1251);