How to get current time and date in C++?

Since C++ 11 you can use std::chrono::system_clock::now() Example (copied from en.cppreference.com): #include <iostream> #include <chrono> #include <ctime> int main() { auto start = std::chrono::system_clock::now(); // Some computation here auto end = std::chrono::system_clock::now(); std::chrono::duration<double> elapsed_seconds = end-start; std::time_t end_time = std::chrono::system_clock::to_time_t(end); std::cout << “finished computation at ” << std::ctime(&end_time) << “elapsed time: ” << elapsed_seconds.count() << … Read more

How to use the PI constant in C++

On some (especially older) platforms (see the comments below) you might need to #define _USE_MATH_DEFINES and then include the necessary header file: #include <math.h> and the value of pi can be accessed via: M_PI In my math.h (2014) it is defined as: # define M_PI 3.14159265358979323846 /* pi */ but check your math.h for more. … Read more

Calling C/C++ from Python? [closed]

ctypes module is part of the standard library, and therefore is more stable and widely available than swig, which always tended to give me problems. With ctypes, you need to satisfy any compile time dependency on python, and your binding will work on any python that has ctypes, not just the one it was compiled … Read more

usr/bin/ld: cannot find -l

To figure out what the linker is looking for, run it in verbose mode. For example, I encountered this issue while trying to compile MySQL with ZLIB support. I was receiving an error like this during compilation: /usr/bin/ld: cannot find -lzlib I did some Googl’ing and kept coming across different issues of the same kind … Read more

Does the ‘mutable’ keyword have any purpose other than allowing the variable to be modified by a const function?

It allows the differentiation of bitwise const and logical const. Logical const is when an object doesn’t change in a way that is visible through the public interface, like your locking example. Another example would be a class that computes a value the first time it is requested, and caches the result. Since c++11 mutable … Read more

Parse (split) a string in C++ using string delimiter (standard C++)

You can use the std::string::find() function to find the position of your string delimiter, then use std::string::substr() to get a token. Example: std::string s = “scott>=tiger”; std::string delimiter = “>=”; std::string token = s.substr(0, s.find(delimiter)); // token is “scott” The find(const string& str, size_t pos = 0) function returns the position of the first occurrence … Read more

Iterator invalidation rules for C++ containers

C++03 (Source: Iterator Invalidation Rules (C++03)) Insertion Sequence containers vector: all iterators and references before the point of insertion are unaffected, unless the new container size is greater than the previous capacity (in which case all iterators and references are invalidated) [23.2.4.3/1] deque: all iterators and references are invalidated, unless the inserted member is at … Read more

Fastest way to check if a file exists using standard C++/C++11,14,17/C?

Well I threw together a test program that ran each of these methods 100,000 times, half on files that existed and half on files that didn’t. #include <sys/stat.h> #include <unistd.h> #include <string> #include <fstream> inline bool exists_test0 (const std::string& name) { ifstream f(name.c_str()); return f.good(); } inline bool exists_test1 (const std::string& name) { if (FILE … Read more