Это переносимый метод с использованием библиотеки хронологии C++11
:
std::string time_in_HH_MM_SS_MMM()
{
using namespace std::chrono;
// get current time
auto now = system_clock::now();
// get number of milliseconds for the current second
// (remainder after division into seconds)
auto ms = duration_cast<milliseconds>(now.time_since_epoch()) % 1000;
// convert to std::time_t in order to convert to std::tm (broken time)
auto timer = system_clock::to_time_t(now);
// convert to broken time
std::tm bt = *std::localtime(&timer);
std::ostringstream oss;
oss << std::put_time(&bt, "%H:%M:%S"); // HH:MM:SS
oss << '.' << std::setfill('0') << std::setw(3) << ms.count();
return oss.str();
}
В списках Scilab есть гетерогенные контейнеры, и это препятствует тому, чтобы оператор равенства == имел то же поведение, что и для матриц. Однако списки объектов с однородными типами можно в некотором смысле превратить в векторы с помощью list2vec
, что позволяет делать то, что вы хотите делать.
Вы хотите сделать такую вещь?
--> x(1).name='john';x(2).age=19;x(2).flag=%t;
--> x(2).name='paul';x(2).age=18;x(3).flag=%f;
--> list2vec(x.name)
ans =
!john !
! !
!paul !
--> list2vec(x.age)
ans =
19.
18.
--> list2vec(x.flag)
ans =
T
T
F