Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
18 / 18 / 5
Регистрация: 08.10.2009
Сообщений: 94

Обратиться к файлу с неизвестным именем, но известным расширением (TXT)

13.07.2011, 23:04. Показов 3074. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ломаю голову...
По заданному пути, пусть будет C:\\, есть файл *.txt
Имя его неизвестно, однако это 100% единственный файл txt в этом каталоге.

Как мне выцепить его имя (а желательно полный путь к нему) средствами c++?
Среда visual studio 2010

Заранее благодарен
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.07.2011, 23:04
Ответы с готовыми решениями:

Операторы условия, циклы с известным и неизвестным числом повторений
чтобы не париться с 3 темами закину 3 лабы в 1 :D порядок: задание - мой вариант(исправить ошибки) 1. С клавиатуры вводятся 4 целых...

Послать на почту файл с неизвестным именем, но известным расширением
Проблема такая. каждый день в папку С:\1 падает файл, имя файла каждый день разное, расширения одинаковые. файл нужно отправить на...

Требуется написать программу которая сохраняет этот файл как txt файл с тем же самым именем но с удаленным doc расширением.
Помогите разрешить следующую задачу. Существует некий файл Name.xml.doc эквивалент текстового файла Name.xml. Требуется написать программу...

10
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.07.2011, 23:41
например, но надо ставить boost
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <boost\filesystem.hpp>
#include <algorithm>
#include <iostream>
#include <regex>
 
namespace fs = boost::filesystem;
 
int main()
{
    std::regex reg(".txt");
 
    std::for_each(fs::directory_iterator(fs::path("C:\\"))
                  , fs::directory_iterator()
                  , [&reg](const fs::path & p)
    {
        if (fs::is_regular_file(p) && std::regex_search(p.string().c_str(), reg))
            std::cout << p.string() << '\n';
    });
  
    std::getchar();
    return 0;
}
1
18 / 18 / 5
Регистрация: 08.10.2009
Сообщений: 94
13.07.2011, 23:45  [ТС]
Вариант хороший, но установка Boost не радует...
у меня есть желание реализовать это через
C++
1
2
3
4
5
BOOL SearchFiles(
        LPCTSTR lpszFileName,                // Директория и маска файлов для поиска
        LPSEARCHFUNC lpSearchFunc,            // Функция, вызываемая для всех найденных файлов.
        BOOL bInnerFolders /* = TRUE */)    // TRUE - поиск в подпапках. 
                                            // FALSE - поиск только в заданной папке
Вот только я не знаю какая должна быть lpSearchFunk, чтобы она мне вернула string с полным path файла
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
13.07.2011, 23:59
Neonjke,

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
#include <iostream>
#include <string>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/regex.hpp>
 
int main()
{
    boost::filesystem::path path_to_file("С:\\");
    boost::regex reg("[A-Za-z0-9].txt");
 
    if (boost::filesystem::exists(path_to_file))
    {
        boost::filesystem::directory_iterator end_ptr;
        for (boost::filesystem::directory_iterator ptr(path_to_file); ptr != end_ptr; ++ptr)
        {
            if (!boost::filesystem::is_directory(ptr->status()))
                if (boost::regex_search(ptr->path().string().c_str(), reg))
                    std::cout << *ptr << std::endl;
        }
    }
 
    return 0;
}
Запоздал, что-то я..(
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
14.07.2011, 00:03
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
#include <stdio.h>
#include <windows.h>
#include <conio.h>
int f (char* ima_direktorii_i_rashirenie){
        WIN32_FIND_DATA FindFileData;
        HANDLE hf;
        hf = FindFirstFile(ima_direktorii_i_rashirenie,&FindFileData);
        if(hf != INVALID_HANDLE_VALUE){
                do{
                        printf("%s\n",FindFileData.cFileName);
                }
                while(FindNextFile(hf,&FindFileData) != 0);
                FindClose(hf);
        }
        getch();
        return 0;
}
int main(){
//        f ("C:\\*.txt");
//        f (".\\*");
        f (".\\ra_*.exe");
        getch();
        return 0;
}
 
//Кому охота НЕ ИСПОЛЬЗОВАТЬ функцию, может использовать этот вариант
//#include <stdio.h>
//#include <windows.h>
//#include <conio.h>
//int main(){
//        WIN32_FIND_DATA FindFileData;
//        HANDLE hf;
//        hf = FindFirstFile("C:\\*.txt",&FindFileData);
//        if(hf != INVALID_HANDLE_VALUE){
//                do{
//                        printf("%s\n",FindFileData.cFileName);
//                }
//                while(FindNextFile(hf,&FindFileData) != 0);
//                FindClose(hf);
//        }
//        getch();
//        return 0;
//}
1
14.07.2011, 00:06

Не по теме:

:-! многострочные комментарии уже отменили?

C
1
/* ....*/

0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
14.07.2011, 00:12
Я же не руками закомментиваю, а программно, а она сама слэши ставит.
0
18 / 18 / 5
Регистрация: 08.10.2009
Сообщений: 94
14.07.2011, 00:17  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
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
#include <stdio.h>
#include <windows.h>
#include <conio.h>
int f (char* ima_direktorii_i_rashirenie){
        WIN32_FIND_DATA FindFileData;
        HANDLE hf;
        hf = FindFirstFile(ima_direktorii_i_rashirenie,&FindFileData);
        if(hf != INVALID_HANDLE_VALUE){
                do{
                        printf("%s\n",FindFileData.cFileName);
                }
                while(FindNextFile(hf,&FindFileData) != 0);
                FindClose(hf);
        }
        getch();
        return 0;
}
int main(){
//        f ("C:\\*.txt");
//        f (".\\*");
        f (".\\ra_*.exe");
        getch();
        return 0;
}
 
//Кому охота НЕ ИСПОЛЬЗОВАТЬ функцию, может использовать этот вариант
//#include <stdio.h>
//#include <windows.h>
//#include <conio.h>
//int main(){
//        WIN32_FIND_DATA FindFileData;
//        HANDLE hf;
//        hf = FindFirstFile("C:\\*.txt",&FindFileData);
//        if(hf != INVALID_HANDLE_VALUE){
//                do{
//                        printf("%s\n",FindFileData.cFileName);
//                }
//                while(FindNextFile(hf,&FindFileData) != 0);
//                FindClose(hf);
//        }
//        getch();
//        return 0;
//}
Я правильно понимаю, что FindFileData.cFileName вернет мне полный путь к файлу в string?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.07.2011, 00:22
Цитата Сообщение от Neonjke Посмотреть сообщение
Я правильно понимаю, что FindFileData.cFileName вернет мне полный путь к файлу в string?
http://msdn.microsoft.com/en-u... s.85).aspx
в std::string нужно упаковывать самому
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
14.07.2011, 00:28
Нет, не полный. Просто имя. Но учитывая, что полный путь ты и так знаешь:
f ("E:\\vso_moio\\*.exe");

А файл у тебя один единственный в указанной директории, ты его легко скропаешь я думаю конкантекацией строк. Удачи!
0
18 / 18 / 5
Регистрация: 08.10.2009
Сообщений: 94
14.07.2011, 00:30  [ТС]
Благодарю, это полностью решает мою проблему)))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void find (char* PathAndName)
{
        WIN32_FIND_DATA FindFileData;
        HANDLE hf;
        hf = FindFirstFile(PathAndName,&FindFileData);
        if(hf != INVALID_HANDLE_VALUE){
                while(FindNextFile(hf,&FindFileData));            
                          printf("%s\n",FindFileData.cFileName);            
                FindClose(hf);
        system("pause");
}
 
int main(){
find ("C:\\*.txt");
system("pause");
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2011, 00:30
Помогаю со студенческими работами здесь

Скачивание файла с неизвестным расширением
Здравствуйте. Нужен код, который будет скачивать файл с неизвестным расширением. Т.е. файл по адресу...

Создание списка объектов класса с заранее неизвестным именем (именем самих объектов)
Уважаемые программисты, не получается решить такую задачу: требуется создать приложение (в консоли) &quot;клиенты банка&quot;. Есть два...

SFML - Картинки в файлах с неизвестным расширением
Всем привет! Часто вижу в файлах различных игр, что, например, текстуры от моделей хранятся в файлах .txd и прочее. Зачем? Есть ли смысл...

Запустить файл с неизвестным расширением как программу с ShellExecute
Здравствуйте. Как в моей программе запустить exe'шник, у которого изменено расширение (расширение известное)?

Папка с неизвестным именем
Необходимо узнать имя папки.Известно её месторасположение , а имя нет


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru