涉及输出计时持续时间的 C++ 错误
C++ Errors involving outputting chrono duration
这是我正在使用的class(一些部分被剪掉了)
const int records = 7;
class Timed {
public:
friend std::ostream& operator<<(std::ostream& os, Timed right) {
for (int i = 0; i < records; i++) {
os << right.eR[i].vName << " " << right.eR[i].duration << " " << right.eR[i].seconds << std::endl;
}
return os;
}
private:
std::chrono::time_point<std::chrono::steady_clock> start, end;
struct {
std::string vName;
std::string seconds;
std::chrono::duration<float> duration;
} eR[records];
};
基本上,我正在尝试输出匿名结构的值。但是,我收到错误:
binary '<<': no operator found which takes a right-hand operand of type 'std::chrono::duration<float,std::ratio>1,1>>' (or there is no acceptable conversion)
我想知道如何在持续时间内打印此值?提前致谢
我猜你正在使用 visual studio。更新一下。
Visual Studio 中的 已损坏。它不适用于混合类型算术,这可以说是 .您收到此错误是因为其中一侧使用 __int64 纳米,而另一侧使用双纳米。
我建议放弃它以支持真正的 C++ 实现,或者使用 Boost.Chrono。
在 C++11/14/17 中,chrono::duration
类型没有流运算符。您有两个选择:
- 提取
.count()
:
|
os << right.eR[i].duration.count() << "s ";
|
#include "date/date.h"
// ...
using date::operator<<;
os << right.eR[i].duration << " ";
上面的 datelib 现在是 C++20 的一部分,但还没有发布。供应商正在努力。当你移植到它时,你可以删除 #include "date/date.h"
和 using date::operator<<;
.
这是我正在使用的class(一些部分被剪掉了)
const int records = 7;
class Timed {
public:
friend std::ostream& operator<<(std::ostream& os, Timed right) {
for (int i = 0; i < records; i++) {
os << right.eR[i].vName << " " << right.eR[i].duration << " " << right.eR[i].seconds << std::endl;
}
return os;
}
private:
std::chrono::time_point<std::chrono::steady_clock> start, end;
struct {
std::string vName;
std::string seconds;
std::chrono::duration<float> duration;
} eR[records];
};
基本上,我正在尝试输出匿名结构的值。但是,我收到错误:
binary '<<': no operator found which takes a right-hand operand of type 'std::chrono::duration<float,std::ratio>1,1>>' (or there is no acceptable conversion)
我想知道如何在持续时间内打印此值?提前致谢
我猜你正在使用 visual studio。更新一下。
Visual Studio 中的已损坏。它不适用于混合类型算术,这可以说是 .您收到此错误是因为其中一侧使用 __int64 纳米,而另一侧使用双纳米。
我建议放弃它以支持真正的 C++ 实现,或者使用 Boost.Chrono。
在 C++11/14/17 中,chrono::duration
类型没有流运算符。您有两个选择:
- 提取
.count()
:
|
os << right.eR[i].duration.count() << "s ";
|
#include "date/date.h"
// ...
using date::operator<<;
os << right.eR[i].duration << " ";
上面的 datelib 现在是 C++20 的一部分,但还没有发布。供应商正在努力。当你移植到它时,你可以删除 #include "date/date.h"
和 using date::operator<<;
.