Size: a a a

2020 July 16

CC

Cool Cooler in C++ Together 2.0
А это как фиксить?
источник

🦊

🦊fox.cpp in C++ Together 2.0
а почему ifstream, если ты выводишь хочешь
источник

M

Michael in C++ Together 2.0
Cool Cooler
C++ это один из самых нужных языков!
источник

🦊

🦊fox.cpp in C++ Together 2.0
а, ёжи, тебе указатель надо бы, навернае
источник

CC

Cool Cooler in C++ Together 2.0
🦊fox.cpp
а почему ifstream, если ты выводишь хочешь
Если юзер ввёл название файла, то я хочю выводить в файл, иначе — в консоль
источник

CC

Cool Cooler in C++ Together 2.0
Ну то есть если ввод юзера пустой — то в консоль
источник

CC

Cool Cooler in C++ Together 2.0
🦊fox.cpp
а, ёжи, тебе указатель надо бы, навернае
& вроде бы имплиситно указатель юзает, не?
источник

🦊

🦊fox.cpp in C++ Together 2.0
std::ostream* placeToOutput = &std::cout;
if (filename != "") {
 placeToOutput = new std::ofstream(filename);
}
источник

🦊

🦊fox.cpp in C++ Together 2.0
или куда там, не забудь память освободить
источник

CC

Cool Cooler in C++ Together 2.0
🦊fox.cpp
или куда там, не забудь память освободить
Так, а вы учили меня unique_ptr'у!
источник

CC

Cool Cooler in C++ Together 2.0
Ща надо оба знания применить
источник

AB

Artöm Bakri Al-Sarmi... in C++ Together 2.0
Cool Cooler
Так, а вы учили меня unique_ptr'у!
Его сюда не так просто будет встроить
источник

AB

Artöm Bakri Al-Sarmi... in C++ Together 2.0
Вместо этого я тебе советую вынести весь код после в функцию и принимать ссылку на острим
источник

AB

Artöm Bakri Al-Sarmi... in C++ Together 2.0
Перед вызовом этой функции опционально создаешь файл. Либо его передаешь, либо cout
источник

CC

Cool Cooler in C++ Together 2.0
    std::unique_ptr<std::ostream> placeToOutput = &std::cout;
источник

CC

Cool Cooler in C++ Together 2.0
Cool Cooler
    std::unique_ptr<std::ostream> placeToOutput = &std::cout;
Вот такая фигня не работает
источник

CC

Cool Cooler in C++ Together 2.0
Artöm Bakri Al-Sarmini
Вместо этого я тебе советую вынести весь код после в функцию и принимать ссылку на острим
Ок, тогда так сделаю
источник

AB

Artöm Bakri Al-Sarmi... in C++ Together 2.0
Cool Cooler
    std::unique_ptr<std::ostream> placeToOutput = &std::cout;
Это неправильно, произойдет 2 вызова деструктора
источник

AB

Artöm Bakri Al-Sarmi... in C++ Together 2.0
Это обходится кастомнвм делитером, но это будет хуже, чем в функцию передать
источник

CC

Cool Cooler in C++ Together 2.0
Artöm Bakri Al-Sarmini
Перед вызовом этой функции опционально создаешь файл. Либо его передаешь, либо cout
#include <iostream>
#include <fstream>
#include <string>
#include <memory>

void dirtyHack(std::ostream* bullshit)
{
   *bullshit << "Hello, this is a sample string to output";
   *bullshit << std::endl;
}

int main()
{
   std::ostream* placeToOutput = &std::cout;
   std::string filename;
   std::cout << "Enter filename:" << std::endl;
   std::cin >> filename;
   if (false == filename.empty())
   {
       placeToOutput = new std::ofstream(filename);
   }
   dirtyHack(placeToOutput);
   if (false == filename.empty())
   {
       delete placeToOutput;
   }
   return 0;
}
источник