c++

c++ timeval结构体如何使用

小樊
84
2024-12-05 00:19:20
栏目: 编程语言

timeval 结构体在 C++ 中用于表示时间,它包含两个字段:tv_sectv_usectv_sec 表示秒数,tv_usec 表示微秒数。以下是如何使用 timeval 结构体的一些示例:

  1. 包含头文件:
#include <sys/time.h>
  1. 创建一个 timeval 结构体变量并设置时间:
struct timeval my_time;
my_time.tv_sec = 10; // 设置秒数为 10
my_time.tv_usec = 500000; // 设置微秒数为 500000
  1. timeval 结构体转换为字符串:
#include <sstream>
#include <iomanip>
#include <iostream>

std::string timeval_to_string(const struct timeval &time) {
    std::ostringstream oss;
    oss << time.tv_sec << "s " << time.tv_usec << "us";
    return oss.str();
}

int main() {
    struct timeval my_time;
    my_time.tv_sec = 10;
    my_time.tv_usec = 500000;

    std::cout << "Time: " << timeval_to_string(my_time) << std::endl;
    return 0;
}
  1. 从字符串解析 timeval 结构体:
#include <sstream>
#include <iostream>

bool string_to_timeval(const std::string &time_str, struct timeval &time) {
    std::istringstream iss(time_str);
    char dummy;
    if (!(iss >> time.tv_sec >> dummy >> time.tv_usec) || !iss.eof()) {
        return false;
    }
    return true;
}

int main() {
    std::string time_str = "10s 500000us";
    struct timeval my_time;

    if (string_to_timeval(time_str, my_time)) {
        std::cout << "Parsed time: " << my_time.tv_sec << "s " << my_time.tv_usec << "us" << std::endl;
    } else {
        std::cout << "Failed to parse time string" << std::endl;
    }

    return 0;
}

这些示例展示了如何创建和使用 timeval 结构体来表示和处理时间。

0
看了该问题的人还看了