LINUX.ORG.RU

C++ сложение char и int.

 , ,


1

1

Привет, ЛОР!

Есть несложный платформер, написанный на C++. Количество карт планируется не менее 100, а создавать для каждого отдельную переменную не хочеться, так как без исходников нельзя будет добавить карту 101, 102...

Никак не могу реализовать что-то вроде этого:

mapFile.open("maps/" + char(isMap) + ".map");

Пробовал strcat, strcpy, и другие способы, но они не кроссплатформенные, а игра, чисто теоритически, подходит для Windows, Mac, ни у, конечно же, Linux.



Последнее исправление: Human-source (всего исправлений: 1)

для С++11:

mapFile.open("maps/" + to_string(isMap) + ".map");
wota ★★
()

такие умные слова, несложный платформер, кроссплатформенно. Иди читай Кернигана и Ритчи.

nokachi
()

sprintf(), itoa() например, и учебник «c++ для полного нуба с нарушением когнитивных функций» для тебя.

anonymous
()

В C++11 можно сделать так:

mapFile.open("maps/" + std::to_string(isMap) + ".map");
В старом стандарте через stringstream:
int mapNumber = 101;
std::string fileName = "maps/";
std::ostringstream stream;
stream << mapNumber;
fileName += stream.str() + ".map"

m0rph ★★★★★
()
Последнее исправление: m0rph (всего исправлений: 2)
stringstream ss;
ss << "maps/" << isMap << ".map";
mapFile.open(ss.str().c_str());
nanoolinux ★★★★
()

Благодаря новым достижениям медицины, анацефалы уже не только выходят в интернет, но и пишут «несложные платформеры». Луговского на вас нет.

anonymous
()
Ответ на: комментарий от m0rph

to_string у меня нет (Ubuntu 13.04, g++ v4.7.3).

Через stringstream уже пробовал, fstream принимает указатель char, но не строки, по крайней мере у меня.

Human-source
() автор топика
Ответ на: комментарий от Human-source

g++: фатальная ошибка: не заданы входные файлы

Так задай, ёпта.

yoghurt ★★★★★
()
#define FMT "maps/%d.map"
#define SZ (sizeof(FMT) + 40)
char buf[SZ];
size_t sz = snprintf(buf, SZ, FMT, (int)isMap);
assert(SZ > sz); // or throw
#undef FMT
#undef SZ
mapFile.open(buf);

И какого оно называется isMap, а не mapNo?

arturpub ★★
()
Ответ на: комментарий от ananas

Сделать прослойку, которая слеши заменяет — 2 минуты. (Ну не для ТСа конечно, тут случай клинический.)

anonymous
()
Ответ на: комментарий от anonymous

Слушай, клинический случай не у меня, а у тебя!!!

Я почти весь день сижу в инете и думаю, почему **** у меня ни**** не работает, а тут какой-то ****** виндузятник , считает что это проще простого, при этом даже не знает и не спрашивает, может быть какие-то проблемы с ПО!!!

Human-source
() автор топика
Ответ на: комментарий от Human-source

Я почти весь день сижу в инете и думаю, почему **** у меня ни**** не работает, а тут какой-то ****** виндузятник , считает что это проще простого, при этом даже не знает и не спрашивает

Батенька, да это диссоциативное расстройство.

anonymous
()
Ответ на: комментарий от Human-source

Тихо, тихо... Не гони на анонимуса, он тебе еще не раз поможет. Тебе и правда надо почитать толковую книжку, раз плаваешь в таких простых вопросах.

arturpub ★★
()
Ответ на: комментарий от arturpub

Работает! Спасибо БОЛЬШОЕ!!!

он тебе еще не раз поможет.

Что-то мне по-плохело...

Тебе и правда надо почитать толковую книжку

Тут полностью согласен. В C++ я не особо разбираюсь. Знаю огромное количество языков, но ни один(кроме, возможно, PHP) не знаю на высоком уровне.

Human-source
() автор топика
Ответ на: комментарий от Human-source

Через stringstream уже пробовал, fstream принимает указатель char, но не строки, по крайней мере у меня.

При чем здесь fstream вообще? О каких строках идет речь, тебе же нужно число преобразовать в строку?

m0rph ★★★★★
()
Ответ на: комментарий от qulinxao

Java в роли замены C++

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

m0rph ★★★★★
()
Последнее исправление: m0rph (всего исправлений: 1)
Ответ на: комментарий от m0rph

Java и не заменяет . есть общая область , есть специфичные где одно лучше , а где лучше другое.

я о задаче топик стартера ,

если топик стартер не поменяет серьёзности подхода к освоению С++ , то всем будет лучше если он будет на жабе писать чем на С++ в котором ещё и указатели в явном виде и сборщика мусора который (не все ресурсы но) приберёт за человеком который называет конкатетацию строки с отображаемой цифрой на символ который приводится к строке как сложение чара с интом нет.

qulinxao ★★☆
()
Ответ на: комментарий от m0rph

При чем здесь fstream вообще? О каких строках идет речь, тебе же нужно число преобразовать в строку?

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

В своем секторе Java хороша, но критические к потреблению ресурсов вещи на ней никто не делает.

Про minecraft слышали? :)

Human-source
() автор топика
Ответ на: комментарий от m0rph

где у топик стартера критичное к потреблению.

и да его задачу лучше всего на Pyton и Ко

qulinxao ★★☆
()
Ответ на: комментарий от wota

Crysis хотябы не на java написан, по крайней мере 3-ий... Продолжение следует :)

Human-source
() автор топика

Категория: платиновые треды лора.

anonymous
()
Ответ на: комментарий от Human-source

как выше уже рекомендовали Кернигана Ричи ( но это чистый С) - и там сильная ориентация на то что каждый программист в конце концов в своей жизни напишит компилятор/интерпретатор.

У Страустропа есть хороший именно для начинающих - учебник ( не его кирпич референс , а именно textbook) ээээ Программирование: принципы и практика использования C++, исправленное издание = Programming: Principles and Practice Using

хоть все значения и числа но в С С++ есть как бы попытка(не всегда впрочем) контролировать несовместимость значений разных типов - однако нет ни строгой не возможности ни ожидаемой(для новичка) автоприведения.

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

Спасибо за информацию!

каждый программист в конце концов в своей жизни напишит компилятор/интерпретатор.

Прямо в «конце концов»? Интересно, за сколько именно до смерти )

Human-source
() автор топика
Ответ на: комментарий от qulinxao

как выше уже рекомендовали Кернигана Ричи ( но это чистый С) - и там сильная ориентация на то что каждый программист в конце концов в своей жизни напишит компилятор/интерпретатор.

Предлагаю именовать программистами только тех, кто таки написал транслятор. Остальных будем именовать (быдло-)кодерами.

anonymous
()
Ответ на: комментарий от anonymous

Ты сам хоть что-то сам вообще написал?

Научить уже определять грань между собой и новичками в каком-то новом, для него, языке!

Human-source
() автор топика
Ответ на: комментарий от Human-source

это определение программиста.

не писал компилятор/интерпретатор - не программист в полном значении.

т.е была же статья , что куча задач(практических) отлично ложится на парадигму и шаблон проектирования :) «трансляция» с некоторого языка в код/действия

qulinxao ★★☆
()
Ответ на: комментарий от anonymous

Поздравляю! Наконец ты понял, кто ты на самом деле!

Мальчик, иди на Паскале решай задачки, или делай half-life 3 и gta 5 на unity 3d!!!

Human-source
() автор топика
Ответ на: комментарий от Human-source

Мальчик, иди на Паскале решай задачки, или делай half-life 3 и gta 5 на unity 3d!!!

пока серьезные дядьки разбираются как конкатенацию строк в C++ делать

thesame ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.