0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 36
1

Ввод имени файла для последующего чтения данных оттуда

26.09.2019, 19:05. Показов 3257. Ответов 3

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, как исправить следующую проблему. Имеется IDE Visual Studio и некоторый проект. В проекте находится файл "text" с расширением .txt. Когда я указываю в строке
C++
1
F.open(name);
в качестве аргумента "text.txt", файл обнаруживается, но я хочу предоставить пользователю возможность указывать путь к файлу или имя самого файла. Я решил реализовать это так:
C++
1
2
3
4
cout << "Введите название файла: ";
cin >> name;
name = kv + name + kv;
F.open(name);
И, если я запускаю программу с возможностью указания пути к файлу или самого файла, то, введя то же самое: text.txt, и дополнив его кавычками через конкатенацию, теперь программа этот файл не видит.
Прикладываю весь листинг программы.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
#include <string>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUS");
    char a;
    int counter = 0;
    string name;
    string kv = "\"";
    fstream F;
    cout << "Введите название файла: ";
    cin >> name;
    name = kv + name + kv;
//  cout << name << endl;
    //открываем файл в режиме чтения
    F.open(name);
    //если открытие файла прошло корректно, то
    if (F)
    {
        //цикл для чтения значений из файла; выполнение цикла прервется,
        //когда достигнем конца файла, в этом случае F.eof() вернет истину.
        while (!F.eof())        // Чтение до тех пор, пока не наступил конец файла.
        {
            //чтение очередного значения из потока F в переменную a
            F >> a;
            if (a == '0' || a == '1' || a == '2' || a == '3' || a == '4' || a == '5' || a == '6' || a == '7' || a == '8' || a == '9')
                counter++;
        }
        cout << "+~~~~~~~~~~~~~~~+" << endl;
        cout << "| Цифр встречено: " << counter - 1 << endl;       // Уменьшаяю на единицу из-за нуль символа.
        cout << "+~~~~~~~~~~~~~~~+" << endl;
        //закрытие потока
        F.close();
    }
    //если открытие файла прошло некорректно, то вывод
    //сообщения об отсутствии такого файла
    else
    {
        cout << "+~~~~~~~~~~~~~~~~~~~~~+" << endl;
        cout << "| Файл не существует! |" << endl;
        cout << "+~~~~~~~~~~~~~~~~~~~~~+" << endl;
    }
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2019, 19:05
Ответы с готовыми решениями:

Сохранение файла проекта, для последующего чтения
В проекте использую динамические массивы из record'ов. TEditorHouse = record h: Float; ...

Календарик и ввод данных оттуда
Доброго времени всем! А кто-нибудь знает, как сделать календарик в аксессе 2003 как в 2010 аксессе?...

Ввод имени для открытия файла
Добрый день, не совсем понимаю, почему у меня выводит, что файл не открыт, хотя он существует 100%,...

Ввод имени для создаваемого файла
Здравствуйте, господа. Можно ли в борланде реализовать функцию ввода имени для создаваемого...

3
136 / 76 / 60
Регистрация: 14.09.2019
Сообщений: 218
26.09.2019, 19:14 2
Лучший ответ Сообщение было отмечено Svonamor как решение

Решение

Svonamor, так не дополняйте имя файла ничем. Уберите строку
C++
1
name = kv + name + kv;
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.09.2019, 19:16 3
del
0
0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 36
26.09.2019, 19:17  [ТС] 4
Какого хрена... Извините, до этого три раза компилировал, но только сейчас файл нашёлся...
0
26.09.2019, 19:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2019, 19:17
Помогаю со студенческими работами здесь

Ввод имени файла для ofstream
Здравствуйте, есть консольное приложение, позволяющее пользователю, например, записать что-то...

Ошибка чтения файла конфигурации (для подключения к базе данных)
Привет всем. Компьютер для работы с флюорографом. Выходит данная ошибка. Как и куда копать?...

Создание файла для записи и чтения, запись в файл данных
Написать простейшую программу, которая для своей работы использует системные вызовы...

Ошибка чтения данных при обращении к полю по имени
Имеется несколько Adoquery, один из которых несёт на себе сводную таблицу данных, которая постоянно...

Каким образом после чтения из файла, узнать позицию для чтения следующего куска байт
Здравствуйте, задача такова есть файл, размером 1000 байт, нужно открыть его считать 100 байт,...

Пользовательское изменение имени файла, для копировании в него данных
Всем доброго времени суток, в VBA я уже 10 дней и вот хотел узнать как прописать код что бы...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru