инт ту чар*
я работаю в M$ VC 7.0
мне нужно переводить числовые переменные в текстовые, например:
char *A;
int B;
нужно перевести B в А.
И вот еще вопрос, почему, если я пишу
char *A;
char *B;
char *C;
A = B + C;
"A" получается какой-то ерундой. Как объединяются строки?
char *B;
char *C;
A = B + C;
Это ты указатели складываешь!
Используй stl - класс string
#include<iostream>
using namespace std;
//...
string A = "qwer", B = "ty", C;
C = A + B;// C = "qwerty"
Вообщем функция выглядит так:
GLvoid glPrint(char *fmt, GLfloat X, GLfloat Y);
у меня есть переменная:
int A; // Число
char B = "Бла-бла-бла!"; //Доп. бадяга.
Нужно сделать так, чтоб C = A + B и это С подставить в функцию.
char rez[10]; //для промежуточного результата
int B=5;
itoa(B,rez,10); //rez=B
strcat(A,rez); //A=A+rez
cout<<A;
Выводит: Bla5
И вот еще вопрос, почему, если я пишу
char *A;
char *B;
char *C;
A = B + C;
"A" получается какой-то ерундой. Как объединяются строки?
1)Я тебе мсдн дам бесплатно - http://msdn2.microsoft.com/en-us/library/default.aspx
2)Тебе книжку по C/C++ нуна купить и почитать.
[QUOTE=0xf001]
Вы не поняли, мне нужно на функцию подавать переменную именно типа char *С; никакие классы сдесь не катят.
[/QUOTE]
Катят. C.c_str().
Все, иди учи С/С++.
char *C;
char A[10];
itoa(FramesRendered,A,10); //Значение счетчика переводится в строку длинной 10(болше цифра никогда не получится)
strcat(A," fps"); //К значению счетчика приписывается "ФПС"
C = A; //Значение А переписывается в переменную формата char *C
glPrint(С, 0, 0) //Подстава в ф-ю
На счет того, что мне надо си учить, уж извините, я сейчас пришел на 1 курс, а злобный препод только 2 месяца назад показал нам этот си, а сейчас говорит, мол рисуйте мне на нем трехмерную сцену в OpenGL. И чтобы с тенями, освещением, сглаживанием, туманом, и фильтрацией, и не просто кубик-рубик, а "осмысленная сцена", типа чайника летают, сталкиваются и разлетаются в разные стороны. И чтоб не тормозило.
Так вот смотрел я разные учебники. В "С++ Бархитный путь" куча заумных схем, а конкретных функций нишиша.
В книге какого-то Страустрапа более понятно, но все равно не сказано, какие процедуры выполнять, чтоб получить желаемый результат.
Такое ощущение, что аффтары думают, что такие вещи само собой разумеются, и писать их ненадо.
Конечно, в VBasic-е было проще, а к С мне еще привыкать.
Так что, господа некогда мне учить Си. Мне нужно Дум4 делать и прикручивать к нему пятые шейдеры.:mad::mad::mad:
Так вот смотрел я разные учебники.
И во всех них русскими буквами написано: "Не использовать char" :D
Можно AnsiString, можно CString можно string. Но ни в коем случае, не символьные массивы - совет опытного человека ;)
Извини, но по твоим постам возникает стойкое ощущение, что учиться ты не хочешь.
Честно говоря, слабо верится...Либо это задание повышенной сложности для зачета/экзамена автоматом, для продвинутых студентов.
В книге какого-то Страустрапа
Больше таких выражений не употребляй, ладно?
Так что, господа некогда мне учить Си. Мне нужно Дум4 делать и прикручивать к нему пятые шейдеры.:mad::mad::mad:
Ну вперед, в чем проблема-то?:D Но все-таки советую сперва хоть msdn почитать, на всякий случай..
С чего ты взял?
Честно говоря, слабо верится...
Твои проблемы. Я же сказал все как есть.
советую сперва хоть msdn почитать
Обязательно. Умру, но выучу. Приду на экзамен по КГГ, и перескажу наизусть весь MSDN.
В книге какого-то Страустрапа более понятно, но все равно не сказано, какие процедуры выполнять, чтоб получить желаемый результат.
Такое ощущение, что аффтары думают, что такие вещи само собой разумеются, и писать их ненадо.
Если хочешь книгу базового С++, где куча подробных примеров - Г. Шилдт, "С++. Базовый Курс". Просто если ты ищешь конкретные функции, не пытаясь вникнуть в представленные общие схемы - то неудивительно, что многого не понимаешь. А Страуструп - это не совсем для начинающих, мне кажется.
Обязательно. Умру, но выучу. Приду на экзамен по КГГ, и перескажу наизусть весь MSDN.
Учить не надо + это нереально. Но надо уметь пользоватся.
а злобный препод только 2 месяца назад показал нам этот си, а сейчас говорит, мол рисуйте мне на нем трехмерную сцену в OpenGL. И чтобы с тенями, освещением, сглаживанием, туманом, и фильтрацией, и не просто кубик-рубик, а "осмысленная сцена", типа чайника летают, сталкиваются и разлетаются в разные стороны. И чтоб не тормозило.
Честно говоря, слабо верится...Либо это задание повышенной сложности для зачета/экзамена автоматом, для продвинутых студентов.
Согласен с Zokarus'ом. Я на первом курсе. Специальность - Компьтерная Безопасность. Сейчас мы проходим Наследование, Чистые Виртуальные Функции, и Перегрузку операторов. Даже продвинутые челы с чисто программерских специальностей не делают ничего сродни 3д сценам и летающим чайника =))
Во-первых, он не Страустрап, а Страуструп
Во-вторых, ИМХО он не "какой-то", а создатель С++
В-третьих, его книга ТОЧНО не для начинающих(по крайней мере нам так лектор сказал)
Так что, господа некогда мне учить Си. Мне нужно Дум4 делать и прикручивать к нему пятые шейдеры.
Как ты будешь "прикручивать к нему пятые шейдеры", если даже конкатенацию строк не можешь произвести?!
гы-гы.. мне сдается афтар - лол :D
Вообщем функция выглядит так:
GLvoid glPrint(char *fmt, GLfloat X, GLfloat Y);
у меня есть переменная:
int A; // Число
char B = "Бла-бла-бла!"; //Доп. бадяга.
Нужно сделать так, чтоб C = A + B и это С подставить в функцию.
Это ВЫ не поняли.
Наличие функции, которая требует char* (а точнее, cons char* - большая разница), означает просто, что создаём объект строкового типа (string, AnsiString, CString............), а потом используем метод типа c_str(), который возвращает указатель на массив символов.
Таким образом, можно легко и просто подготавливать данные для API-функций.
А работая с непосредственно с символьными массивами - дальше "HELLO WORLD" не уйдёте - отладчик не пустит :D
А работая с непосредственно с символьными массивами - дальше "HELLO WORLD" не уйдёте - отладчик не пустит :D
=)))) Другая крайность ))
Кудаж он отладчик денется то? )) Просто надо руки иметь. ОС писали и пишут таким образом, а не простенькие программы )
Согласен - есть "критические секции" кода, в которых счёт идёт на каждый такт процессора и байт стека. Тут и в самом деле не до классов. Но ведь 99% разрабатываемых самостоятельно программ таких секций не имеют.
Посему лучше "расслабиться и постараться получить удовольствие" от работы со сложноструктурированными объектами, делающими всю "грязную работу" за программиста. Дать волю Музе и освободить Вдохновенье от оков рутинных операций контроля памяти :D.
Как ты будешь "прикручивать к нему пятые шейдеры
Если вам нужно к каждой шутке клеить смайлик, то извините... кхм-кхм..
Даже продвинутые челы с чисто программерских специальностей не делают ничего сродни 3д сценам и летающим чайника =))
Хотите сказать, что я вам вру? Очень надо. Если угодно - специальность "ИС" - "Информационные системы и технологии".
Вот тут есть учебная программа по специальности ИС, и там русским по белому написано, что на первом курсе - КГГ.
http://www.vvsu.ru/iskt/specialities/071900.asp
Причем главный прикол в том, что "технологии программирования", которые нам должны были поставить на этот семестр, переставили на следующий, заменив несуществующим в природе предметом "введение в специальность", который по суте является ни к чему не обязывающей демагогией на тему "в чем заключается ваша будущая профессия".
З.Ы. Сам ты лол. :D (смайлик - для большей понятности)
З.Ы.Ы. В конце концов, я не нехочу учить Си, просто времени нет делать это сейчас.. Особенно с таким преподом..
да, я не верю тебе.
Первые два курса практически в любом универе - общеобразовательные. Только в некотрых ВУЗах вводятся спецкурсы с первого семестра. И тогда такие предметы(компьютерная графика, языки высших уровней, электроника, схемотология, булева алгебра и пр.) начинаются с нуля. А у Вас, почему-то сходу пошли 3д сцены, шейдеры, тени и т.д. и т.п.
Мораль: умными не рождаются.
...
#include <stdarg.h>
HFONT font;
GLuint base;
void font_init(HDC hDC)
{
base = glGenLists(96);
font = CreateFont(-12, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, RUSSIAN_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE | DEFAULT_PITCH, "Microsoft Sans Serif");
SelectObject(hDC, font);
wglUseFontBitmaps(hDC, 32, 96, base);
}
void font_release(void)
{
DeleteObject(font);
glDeleteLists(base, 96);
}
void glPrint(GLuint x, GLuint y, const char *fmt, ...)
{
char text[2048];
va_list ap;
if (fmt == NULL)
return;
va_start(ap, fmt);
vsprintf(text, fmt, ap);
va_end(ap);
glPushAttrib(GL_LIST_BIT);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, 1024, 0, 768, -1, 1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRasterPos2i(x, y);
glListBase(base - 32);
glCallLists(strlen(text), GL_BYTE, text);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glPopAttrib();
}
int main(...)
{
// тут разный код. инициализация и т.д.
...
// для текста
font_init(hDC); // hDC - твой контекст устройства
glPrint(0,0,"%s: %u", "Bla-bla-bla: ", 100);
...
font_release(); // освободить память и т.д.
}
Заметь, никаких классов и т.д. Хотя, я обернул бы это в класс (хотя бы для разных шрифтов и размеров).
З.Ы. А язык (инструмент) все-таки изучи, это же тебе надо, а не преподу...
Во-первых, он не Страустрап, а Страуструп
Простите, а где это написано???
Его имя Bjarne Stroustrup(мог описаться, но вряд ли...) и его можно вполне прочитать как Страустрап. Ещё не известно, как оно правильно произноситься(хотя не спорю почти все издания пишут его именно так)
PS: Это не претензия, но если человек читал его на аглицком(хоть я в этом и очень сомневаюсь...) то вполне мог прочитать и так, причём по всем правилам он прав.....