我正在尝试制作一个表(一个 9 x 11 数组)来存储多个排序函数所花费的时间量。
我想我希望表格是一个字符串。我目前无法解决如何将 chrono
转换为 string
并且无法在线找到任何资源。
我是否需要放弃表的字符串类型,或者有没有办法将这些时间差异存储在一个字符串中?
for (int i = 0; i<8;i++) // sort 8 different arrays
{
start = chrono::system_clock::now();
//Sort Array Here
end = chrono::system_clock::now();
chrono::duration<double> elapsed_seconds = end-start;
table[1][i] = string(elapsed_seconds) // error: no matching conversion for functional style cast
}
最佳答案
您需要流式传输到 std::ostringstream
,然后从该流中检索字符串。
流式传输 chrono::duration
你可以使用它的 .count()
成员函数,然后您可能想要添加单位(例如 ns
或任何单位)。
这个免费的、仅包含头文件的开源库:https://howardhinnant.github.io/date/chrono_io.html使流式传输 duration
变得更容易通过自动为您附加单位。
例如:
#include "chrono_io.h"
#include <iostream>
#include <sstream>
int
main()
{
using namespace std;
using namespace date;
ostringstream out;
auto t0 = chrono::system_clock::now();
auto t1 = chrono::system_clock::now();
out << t1 - t0;
string s = out.str();
cout << s << '\n';
}
只为我输出:
0µs
没有 "chrono_io.h"
它看起来更像:
out << chrono::duration<double>(t1 - t0).count() << 's';
还有 to_string
可以使用的家庭:
string s = to_string(chrono::duration<double>(t1 - t0).count()) + 's';
没有to_string
直接来自 chrono::duration
然而。你必须用.count()
“逃脱”然后添加单位(如果需要)。
更新
C++20 带来了 "chrono_io.h"
的功能直入<chrono>
.因此不再需要免费的开源库。
关于c++ - 将 chrono::duration 转换为字符串或 C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42866524/