Comment quelqu'un ferait-il cela? par exemple, j'aime:imprimer l'heure sur chaque appel à std :: cout
std::cout << "something";
il faut imprimer le temps avant « quelque chose »
Comment quelqu'un ferait-il cela? par exemple, j'aime:imprimer l'heure sur chaque appel à std :: cout
std::cout << "something";
il faut imprimer le temps avant « quelque chose »
Vous pouvez utiliser une fonction simple qui imprime l'horodatage puis retourne le flux pour l'impression de plus:
std::ostream& tcout() {
// Todo: get a timestamp in the desired format
return std::cout << timestamp << ": ";
}
Vous pouvez ensuite appeler cette fonction au lieu d'utiliser directement std::cout
, chaque fois que vous voulez un horodatage inséré:
tcout() << "Hello" << std::endl;
Faites votre propre flux pour cette :) Cela devrait fonctionner:
class TimedStream {
public:
template<typename T>
TimedStream& operator<<(const T& t) {
std::cout << getSomeFormattedTimeAsString() << t << std::endl;
return *this;
}
};
TimedStream timed_cout;
void func() {
timed_cout << "123";
}
vous deviendriez être capable d'utiliser cette classe pour chaque type pour lequel std::cout << obj
peut être fait, donc aucun travail supplémentaire n'est nécessaire.
Mais s'il vous plaît noter que l'heure sera écrite avant chaque <<
, de sorte que vous ne pouvez pas les enchaîner facilement. Une autre solution avec horodatage explicite est:
class TimestampDummy {} timestamp;
ostream& operator<<(ostream& o, TimestampDummy& t) {
o << yourFancyFormattedTimestamp();
}
void func() {
cout << timestamp << "123 " << 456 << endl;
}
Cela ressemble à des devoirs. Vous voulez quelque chose dans la ligne de:
std::cout << time << "something";
trouver un moyen de la récupérer le temps sur votre système, en utilisant un appel système. Ensuite, vous devrez implémenter un opérateur < < pour votre classe/structure dépendant du système.
Travail à domicile? Ressemble plus au début d'un cadre de notation de couteau d'armée suisse. :) – Kos
ostream& printTimeWithString(ostream& out, const string& value)
{
out << currentTime() << ' ' << value << std::endl;
return out;
}
Générez l'heure actuelle en utilisant votre format de sortie favori Boost.DateTime.
+1, battez-moi. – rcollyer
Si vous voulez pouvoir enchaîner les choses, pourquoi ne pas simplement rendre l'opérateur de TimedStream << return a std :: ostream & et retourner std :: cout? Puis timed_cout << x << y, qui se lie comme (timed_cout << x) << y, est comme faire timed_cout << x suivi de std :: cout << y. –