Например у меня есть число
1e+14
оно выводится в консоль (cmd.exe) именно так
что я могу сделать, чтобы вместо того что выводится, выводилось вот такое число
1*10^14
В дополнение к ответу @ARHovsepyan - просто в комментарий не влезу...
Я бы брал опции форматирования из основного потока, т.е. писал бы примерно так:
struct e10
{
double d;
e10(double value):d(value) {}
};
std::ostream& operator <<(std::ostream& out, const e10& m)
{
std::ostringstream os;
os.flags(out.flags());
os.precision(out.precision());
os.width(out.width());
os.fill(out.fill());
os << m.d;
std::string s = os.str();
size_t k = s.find('e');
if (k != s.npos) {
s.erase(k, 2);
s.insert(k, "*10^");
}
return out << s;
}
Так мы можем выводить именно так, как нужно, не фиксируя точность или еще что-то и не передавая лишние параметры в класс - все параметры форматирования можно указывать в основном потоке.
Единственное - нужно разобраться, что делать с шириной, поскольку один символ e
заменяется целыми четырьмя. Здесь возможны варианты - начиная от os.width(out.width()-3);
...
Например так:
#include <iostream>
#include <iomanip>
#include <sstream>
struct My_Smanip { //не совсем манипулятор
double d;
My_Smanip(double value = 0)
: d(value) {}
};
std::ostream&
operator <<(std::ostream& out, const My_Smanip& m)
{
std::ostringstream os;
os << std::setprecision(2) << std::fixed
<< std::scientific << m.d;
std::string s = os.str();
size_t k = s.find('e');
if (k != s.npos) {
s.erase(k, 2);
s.insert(k, "*10^");
}
out << s;
return out;
}
int main() {
std::cout << My_Smanip(pow(10, 14));
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Что-то всё работало, а потом поломався! Данными база заполненаВсё работало
Когда выбираю в меню виджет интеграции с картами он выглядит так:
Есть класс производый от Window, который закрывается при помощи методаClose()