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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Ludwig
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20
#1

Как назвать файл переменной n? - C++

22.02.2013, 15:09. Просмотров 1727. Ответов 31
Метки нет (Все метки)

Господа, помогите новичку, я пишу программу и я хочу, чтобы она создавала файл, названной по имени переменной n, которую я ввожу чуть-чуть раньше. Т.е. если я в качестве переменной пишу Hello world, то у меня файл, куда далее будут записаны некие данные назывался "Hello world"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2013, 15:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как назвать файл переменной n? (C++):

Как назвать классы? - C++
Сразу замечу, что дело происходит в 2D без физики, как таковой. 1) У меня есть классы: Mixer - звуковой движок Graphics -...

Не знаю как назвать - C++
Подскажите пожалуйста, где здесь ошибка? Пытался скомпилировать в Microsoft Visual C++ (2010) Нажал на кнопку Run, а там ошибка, ну...

Как назвать эту строку? - C++
do { cin>>x; summ+=a; f=x!=0; } while (f); Первая - заголовок. Вторая, третья, четвёртая, пятая и шестая вместе - тело. А...

Как назвать транслятор языка PL/0 - C++
Привет. В книге Вирта (Алгоритмы + структуры данных = программы) в конце разрабатывается Транслятор языка PL/0. Я решил его реализовать....

Проблема.(Не знаю даже как ее назвать...) - C++
Небольшое введение, кто не хочет может сразу перейти ко второй части. У меня есть проблема с написанием части моей программы. Все дошло...

Что это? Как правильно назвать? - C++
const int T_height = 36; const int T_width = 2; const std::string Table = { { "a","letter" }, { "b","letter" }, { "c","letter"...

31
NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
22.02.2013, 15:41 #2
Хм...
Программа ничего не знает про названия переменных, после компиляции остаются только адреса в памяти.
Есть такая технология RTTI, но она должна поддерживаться компилятором.
http://ru.wikipedia.org/wiki/%D0%94%...BD%D1%8B%D1%85
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
22.02.2013, 15:50 #3
Если имеется в виду текстовый файл и нужно его создать, присвоив название из какой-то переменной, то так:
C++
1
2
3
char n[10];
std::cin>>n;
std::ofstream file(n);
1
NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
22.02.2013, 15:58 #4
Так, то да...но менять код нужно в 2-х местах.
1. Название переменной.
2. Выводимая строка.

А вот как сделать чтобы функция вывод не знала названия переменной в виде строки, в получала его runtime?
Например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void print(string a){
  cout << a;
}
 
int main{
  int qwe;
  print(что то); // как то передать имя переменной
 
  int asd;
  print(что то);
 
  int zxc;
  print(что то);
}
Что бы результатом программы было:
qwe
asd
zxc

Т.е. выводить не значение переменной, а ее название.
0
Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 151
22.02.2013, 16:09 #5
Возможно я и ошибусь, но ведь компилятор все затирает, затирает названия переменных в "кашу-малашу" читабельную только для компа...
0
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
22.02.2013, 16:14 #6
NIch, судя по
Цитата Сообщение от Ludwig Посмотреть сообщение
Т.е. если я в качестве переменной пишу Hello world, то у меня файл, куда далее будут записаны некие данные назывался "Hello world"
автору это и не надо.

В runtime вообще разве существуют "имена переменных" в том виде, которые были в исходном коде?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
 
#define name(var) #var
 
void print(std::string a)
{
    std::cout << a << "\n";
}
 
int main()
{
    int qwe;
    print(name(qwe));
 
    int asd;
    print(name(asd));
 
    int zxc;
    print(name(zxc));
 
    return 0;
}
0
NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
22.02.2013, 16:38 #7
См. RTTI.
Технология позволяет хранить всю инфу об объекте от списка и типа свойств, до их имен.
По крайней мере Delphi XE2 (и скорее всего C++ Builder XE2) эти фишки поддерживает.
Т.е. можно пройти по списку свойств и методов, а так же вызывать эти методы по имени строкой.
C++
1
2
3
4
5
6
7
8
9
// Описанная функция в классе
class SomeClass{
 
  public:
    void Make_me_good();
 
}
// Вызов функции по имени
Action("Make_me_good");
Конечно, реализация далеко не такая простая, там достаточно много подготовительных функции и пр.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.02.2013, 17:30 #8
Цитата Сообщение от Ludwig Посмотреть сообщение
Господа, помогите новичку, я пишу программу и я хочу, чтобы она создавала файл, названной по имени переменной n, которую я ввожу чуть-чуть раньше. Т.е. если я в качестве переменной пишу Hello world, то у меня файл, куда далее будут записаны некие данные назывался "Hello world"
Файл по имени переменной или по введённому значению строковой переменной? Не может быть переменной с именем Hello world. Пробелы в имени переменной не допускаются. Если по значению, то 3 пост.
1
Ludwig
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20
22.02.2013, 17:56  [ТС] #9
alsav22, Я говорил к примеру. Мне просто нужно, чтобы имя создаваемого файла было таким, какой является переменная (если n=5, то файл называется 5.txt, если n=abrakadabra, то файл, соответственно, abrakadabra.txt)
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.02.2013, 18:00 #10
Только если имя файла из нескольких слов, то:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
 string str;
 getline(cin, str);
 ofstream file(str);
 
 system("pause");
 return 0;
}
И сделать проверку, чтобы в имени файла не было недопустимых символов (/\:*?<>)

Цитата Сообщение от Ludwig Посмотреть сообщение
alsav22, Я говорил к примеру. Мне просто нужно, чтобы имя создаваемого файла было таким, какой является переменная (если n=5, то файл называется 5.txt, если n=abrakadabra, то файл, соответственно, abrakadabra.txt)

Добавлено через 3 минуты
Извините за назидательный тон, но чтобы получить правильный ответ, нужно задать правильный вопрос. В первом посте:
Цитата Сообщение от Ludwig Посмотреть сообщение
файл, названной по имени переменной
Многие так поняли. Поэтому я и уточнил. Имя переменной - это одно, а значение переменной - это другое. Если по значению, то ответы есть, только переменная должна быть строковой. Если не строковая, то, переводить в строковую.
0
Ludwig
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20
22.02.2013, 18:03  [ТС] #11
Прошу прощения=)
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.02.2013, 18:06 #12
Цитата Сообщение от Ludwig Посмотреть сообщение
Прошу прощения=)
Вообщем-то, не за что. Я последний пост дописал, по поводу, если переменная не строковая.
0
Ludwig
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20
22.02.2013, 18:20  [ТС] #13
BumerangSP, а как задать формат файла?
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
22.02.2013, 18:31 #14
Ludwig, в смысле, расширение (txt,...) ? Или тип (текстовый, бинарный)?
0
Ludwig
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 20
22.02.2013, 18:37  [ТС] #15
BumerangSP, ну, конкретно сейчас, нужен txt, но я был бы очень благодарен, если бы знал побольше на эту тему)
0
22.02.2013, 18:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2013, 18:37
Привет! Вот еще темы с ответами:

Как назвать переменную зная её String - C++
Например есть у нас массив из трех стрингов. {a b c}. Я такой считываю и хочу что бы первый символ &quot;в данном случае а&quot; обозвал новую...

Как назвать элемент масива структур - C++
Есть вот такая вот часть кода: player players = { {&quot;ukraine&quot;, &quot;pl&quot;, &quot;loshkov_genadi_yurivich&quot;, 2, 19, 186, 81}, {&quot;russia&quot;, ...

Как назвать переменную именем, введенным пользователем? - C++
Недавно начал изучать C++. Скажите пожалуйста, как назвать переменную значением из другой переменной? Вот код простой программы и как...

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


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

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

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