Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 51, средняя оценка - 4.96
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
#1

Открыть файл, имя которого задается из командной строки - C++

14.10.2011, 15:38. Просмотров 7205. Ответов 10
Метки нет (Все метки)

Проблема в том, чтобы открыть файл, имя которого пользователь впечатывает в консоли
Когда пытаюсь сделать это с помощью потоков, все открывается, но только если в имени файла нет русских букв. Кодировка многобайтовая, это обязательно для работы приложения.
C++
1
2
3
4
void OTKR(const unsigned char* IMYA)
{
    file.open((char*)IMYA, fstream::in | fstream::out | fstream::app);
}
Когда делаю это с помощью указателей, вообще ничего не открывается, но если я впишу в программе путь заранее, открывается и с русскими буквами в пути.
C++
1
2
3
4
void OTKR(const unsigned char* IMYA)
{
    F=fopen((const char*)IMYA,"r+");    
}
Если вызову функцию так:
C++
1
OTKR((const unsigned char *)"C:\\Users\\Дима\\Desktop\\1.txt");
то все будет работать, но мне нужно чтоб из консоли задавался путь.
Что можно сделать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2011, 15:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Открыть файл, имя которого задается из командной строки (C++):

Открыть файл, имя которого задается с клавиатуры. Посчитать количество байт в этом файле. Первую половину прочитанного файла записать в другой файл. - C++
ребят помогите! плиз!!1. Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество байт в этом файле....

Лабораторная работа номер 5 задание 1! Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество байт в этом файле - C++
Лабораторная работа номер 5 задание 1!!!! Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество...

Через аргументы командной строки скопировать файл в файл - C++
Объясните, пожалуйста, как через аргументы командной строки скопировать файл в файл?

Написать программу которая читает из командной строки два аргумента: имя переменной и значение этой переменой - C++
Написать программу которая читает из командной строки два аргумента : имя переменной и значение этой переменой. Если переменная не может...

Работа с файлами, название файла задается в командной строке - C++
Помогите с заданием на контрольную пожалуйста. Написать программу, определяющую символ чаще других встречается в данном файле. Название...

Как открыть файл, если имя файла является переменной - C++
Помогите нашел решение проблемы только для Си , как реализовать на С++ ? На Си void Decoder::menu() { unsigned int go; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mut
5 / 5 / 0
Регистрация: 12.10.2011
Сообщений: 46
14.10.2011, 15:42 #2
IMYA - у тебя char?
попробуй string мб?
0
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
14.10.2011, 17:16 #3
вот
C++
1
2
3
4
5
6
7
8
9
int main(int argc, char *argv[])
{
    FILE *f;
    argv[1]="c:\\keys.txt";
    f=fopen(argv[1],"rt");
    std::cout << f;
    getch();
    return 0;
}
0
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
14.10.2011, 20:04  [ТС] #4
Цитата Сообщение от Van111 Посмотреть сообщение
вот
C++
1
2
3
4
5
6
7
8
9
int main(int argc, char *argv[])
{
    FILE *f;
    argv[1]="c:\\keys.txt";
    f=fopen(argv[1],"rt");
    std::cout << f;
    getch();
    return 0;
}
Не работает, не открывает файл.
И все равно эт не то, чего бы мне хотелось, здесь задается имя файла в коде, а я хочу, чтобы из консоли.
0
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
14.10.2011, 21:51 #5
ну блин вы программист программистский
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdlib>
#include <iostream>
#include "stdio.h"
#include "conio.h"
 
using namespace std;
int main(int argc, char *argv[])
{
    FILE *f;
    char s[20];
    cin >> s;
    f=fopen(s,"rt");
    std::cout << f;
    getch();
    return 0;
}
если это вас не устроит то я повешусь
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
14.10.2011, 21:55 #6
после получения строки, попробуйте OemToAnsi.
более чем уверен, что решит проблему.
просто когда вы пишете сразу в коде, кодировка нормальная.
когда через консоль, то Oem, а коды символов там не совпадают.
2
Сыроежка
Заблокирован
14.10.2011, 21:56 #7
Цитата Сообщение от NegativeCreep Посмотреть сообщение
Проблема в том, чтобы открыть файл, имя которого пользователь впечатывает в консоли
Когда пытаюсь сделать это с помощью потоков, все открывается, но только если в имени файла нет русских букв. Кодировка многобайтовая, это обязательно для работы приложения.
C++
1
2
3
4
void OTKR(const unsigned char* IMYA)
{
    file.open((char*)IMYA, fstream::in | fstream::out | fstream::app);
}
Когда делаю это с помощью указателей, вообще ничего не открывается, но если я впишу в программе путь заранее, открывается и с русскими буквами в пути.
C++
1
2
3
4
void OTKR(const unsigned char* IMYA)
{
    F=fopen((const char*)IMYA,"r+");    
}
Если вызову функцию так:
C++
1
OTKR((const unsigned char *)"C:\\Users\\Дима\\Desktop\\1.txt");
то все будет работать, но мне нужно чтоб из консоли задавался путь.
Что можно сделать?
Прежде, чем сюда писать, вы хоть проделайте минимальную работу, то есть определите ошибку, которую генерирует открытие файла с помощью fopen. Почему мы должнеы гадать на кофейной гуще?!!!
1
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
15.10.2011, 01:42  [ТС] #8
Цитата Сообщение от Сыроежка Посмотреть сообщение
Прежде, чем сюда писать, вы хоть проделайте минимальную работу, то есть определите ошибку, которую генерирует открытие файла с помощью fopen. Почему мы должнеы гадать на кофейной гуще?!!!
не выдает ошибок никаких, все компилируется и запускается, однако если в пути к файлу есть папки на русском языке, он его не открывает и действий никаких не производит над ним, т.е. когда я вызываю fopen или fread какие-то действия производятся, но с нужным файлом ничего не происходит
после получения строки, попробуйте OemToAnsi.
более чем уверен, что решит проблему.
просто когда вы пишете сразу в коде, кодировка нормальная.
когда через консоль, то Oem, а коды символов там не совпадают.
Функция и вправду переводит из Oem в Ansi, однако в консоль выводится не то и что самое печальное, с файлом работа так и не производится
0
Миниатюры
Открыть файл, имя которого задается из командной строки   Открыть файл, имя которого задается из командной строки  
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
15.10.2011, 03:21 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char* argv[])
{
   char s[250], t[250];
   cin.getline(s,250);
   OemToChar(s,t);
   fstream file(t);
   if (file.is_open())
   {
      cout << "The file " << s << " successful open." << endl;
      file.close();
   }
   return 0;
}
1
NegativeCreep
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
15.10.2011, 03:48  [ТС] #10
Добавлено через 2 минуты
Цитата Сообщение от kazak Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char* argv[])
{
   char s[250], t[250];
   cin.getline(s,250);
   OemToChar(s,t);
   fstream file(t);
   if (file.is_open())
   {
      cout << "The file " << s << " successful open." << endl;
      file.close();
   }
   return 0;
}
заработало, огромное спасибо!
1
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
15.10.2011, 03:48 #11
Зайдем с другой стороны, какой компилятор?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2011, 03:48
Привет! Вот еще темы с ответами:

Запуск из командной строки и вывод в файл - C++
В общем, запускаю программу из командной строки и делаю вывод в файл. Как можно сделать так, чтобы этот файл вывода лежал рядом с...

Лог файл и аргументы командной строки - C++
Привет! Осваиваю С++ и нужна помощь, я хочу что бы в командной строке: ввел символ и поменялся след робота, но у меня получается так, что...

Разбор командной строки\Вывод в файл координат - C++
Здравствуйте. Помогите, пожалуйста, дополнить код. Нужно сделать так, чтобы координаты точек, где прошел робот, записывались в файл...

Вывод в файл из командной строки по указанному в ней пути - C++
Здравствуйте! Нужно написать программу, которая копирует вводимый с клавиатуры код (до эмулированного конца файла) в файл, имя которого...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.10.2011, 03:48
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru