Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.22.181.81] |
|
Страницы: (4) [1] 2 3 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Ну вот printf часто удобнее cout'а. Да и _getch'а вроде как нет в C++.
Добавлено Как пример... Эта тема была разделена из темы "long double 80 бит (Windows)" |
Сообщ.
#2
,
|
|
|
За printf() vs std::cout – это в Холивары. Я лично с этим в корне не согласен. Что до _getch(), то в Стандарте такой функции нет, даже в C. Это расширение языка, хоть и распространённое, но только потому, что сама платформа, для которой эта функция нужна, распространена.
Добавлено P.S. Аналогов нет – пользуй на здоровье. |
Сообщ.
#3
,
|
|
|
Цитата Qraizer @ С чем "с этим"?Я лично с этим в корне не согласен. Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#4
,
|
|
|
Вот с этим:
Цитата Jin X @ Ну вот printf часто удобнее cout'а. Добавлено Единственная ситуация, когда он удобнее, это когда он есть, а std::cout-а нет. Т.е. в C. Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#5
,
|
|
|
Qraizer, ты считаешь средства форматирования в потоках i/o удобнее printf/sprintf?
Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#6
,
|
|
|
Цитата Jin X @ Да и _getch'а вроде как нет в C++. std::cin.get(); ? Добавлено Цитата JoeUser @ Qraizer, ты считаешь средства форматирования в потоках i/o удобнее printf/sprintf? С ними работать удобнее и безопаснее в С++(с потоками в смысле). Допустим та же sprintf не безопасна. Добавлено Ну и Сишные функции заточены исключительно на голые указатели, что как бы намекает - на то, что ты направил ствол в ногу, и пальцем дергаешь курок. Выстрелит - не выстрелит Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#7
,
|
|
|
Цитата Wound @ ? _getch() подавляет эхо, std::cin.get() - нет. Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#8
,
|
|
|
Цитата JoeUser @ _getch() подавляет эхо, std::cin.get() - нет. Отключи его системными функциями, если тебе нужно именно так: HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); DWORD mode = 0; GetConsoleMode(hStdin, &mode); SetConsoleMode(hStdin, mode & (~ENABLE_ECHO_INPUT)); Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#9
,
|
|
|
Цитата Wound @ С ними работать удобнее На счет безопасности не говорим. Тут вопросов нет. А вот на счет удобства форматирования я бы поспорил. К примеру, изобрази это манипуляторами потоков i/o: char i = 12; printf("%04d :: %0*x",i,4,i); Добавлено Цитата Wound @ Отключи его системными функциями, если тебе нужно именно так: А смысл городить эту "лапшу", если просто можно использовать _getch()? Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#10
,
|
|
|
Цитата JoeUser @ К примеру, изобрази это манипуляторами потоков i/o: Загляни в iomanip, выбери интересующий тебя манипулятор - напиши его. Вот тебе обратная задача, изобрази своими sprintf'ми: MyObject object; std::string message = "message"; std::ostringstream stream; stream << "Message: " << message << << " Size: " << message.size() << object << std::endl; Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#11
,
|
|
|
Оффтопите. Да и Холивары у нас в отдельном разделе.
Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#12
,
|
|
|
Цитата Wound @ Загляни в iomanip, выбери интересующий тебя манипулятор - напиши его. Зачем мне? У меня printf есть Я просто хотел показать несостоятельность твоего утверждения насчет мнимого "удобства" использования потоков в плане форматирования. А раз пошла песня "возьми и напиши ..." - значит я прав. Мне удобнее использовать готовое, чем изобретать велик Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#13
,
|
|
|
Цитата Wound @ Вот тебе обратная задача, изобрази своими sprintf'ми: Еврейский у тя подход Не ответив на мой вопрос, задаешь свой Ну примерно так будет: #include <iostream> #include <sstream> #include <cstdio> class MyObject { public: char* str() { return const_cast<char*>(Data); }; private: const char* Data = "MyObject"; }; int main() { MyObject object; std::string message = "message"; std::ostringstream stream; //stream << "Message: " << message << " Size: " << message.size() << object << std::endl; printf("Message: %s Size: %d%s\n",message.c_str(),message.size(),object.str()); return 0; } Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#14
,
|
|
|
Цитата Wound @ Ага. Т.е. ради принципа использовать функции C++ я должен нагромождать код всякой ерундой?Отключи его системными функциями, если тебе нужно именно так К тому же, я не о getchar говорю, а о _getch. Мне нужен не ввод строки до Enter'а, а 1 клавиша. Не надо путать. Добавлено Короче... каждый инструмент имеет свои + и -, так что всё нужно применять с умом и к месту. Вот и всё. Хотя эти + и - знать не мешает. Просто не надо говорить, что "а" однозначно лучше, чем "б". Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |
Сообщ.
#15
,
|
|
|
Цитата Jin X @ Т.е. ради принципа использовать функции C++ я должен нагромождать код всякой ерундой? Вообщето getch, _getch это не стандартная функция С++, это расширение от Майкрософт. На других системах твой код работать не будет. Добавлено Цитата Jin X @ Короче... каждый инструмент имеет свои + и -, так что всё нужно применять с умом и к месту. Вот и всё. Хотя эти + и - знать не мешает. Просто не надо говорить, что "а" однозначно лучше, чем "б". Да, применять Сишные функции в языке С++, когда в нем есть аналоги - это не с умом и не к месту. И я сейчас говорю не о функции getch(так как она не имеет отношения не к С, не к С++). Потому как проще тогда уже взять чистый Си и писать на нем, если на нем проще и удобней реализовать какую то задачу, чем на С++. Добавлено Цитата Wound @ На других системах твой код работать не будет. Даже банально может не скомпилироваться, когда ты вдруг внезапно перейдешь на другой компилятор. В случае нагроможденного кода всякой ерундой, по крайней мере будет больше гарантий, что это будет работать и компилироваться в одной системе, но разными компиляторами. Добавлено Ну и если заглянуть в MSDN, то можно внезапно обнаружить такую ремарку(https://msdn.microsoft.com/ru-ru/library/078sfkak.aspx): This API cannot be used in applications that execute in the Windows Runtime. For more information, see CRT functions not supported with /ZW. То есть оно даже к твоему удивлению может перестать работать, после изменения настроек компилятора. Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)" |