- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用boost::lexical_cast
在字符串表示和实际数据之间来回转换我的类型。这就是我想要做的:
#include <iostream>
#include <boost/lexical_cast.hpp>
#include <string>
struct Foo
{
Foo() = default;
Foo(const std::string& str)
: str(str)
{
}
friend std::istream& operator>>(std::istream& is, Foo& foo);
friend std::ostream& operator<<(std::ostream& os, const Foo& foo);
private:
std::string str;
};
// For conversion to Foo.
std::istream& operator>>(std::istream& is, Foo& foo)
{
return is >> foo.str;
}
// For conversion from Foo.
std::ostream& operator<<(std::ostream& os, const Foo& foo)
{
return os << foo.str;
}
int main()
{
boost::lexical_cast<Foo>("ok");
boost::lexical_cast<std::string>(Foo("ok"));
}
但这会导致段错误。为什么?
最佳答案
听起来崩溃是由于堆栈溢出引起的。我认为您的operator>>
通过隐式将foo.str
转换回Foo
来调用自己。
尝试通过使构造函数显式删除隐式转换:
explicit Foo(const std::string& str) noexcept
: str(str)
{
}
关于c++ - 通过boost::lexical_cast添加类型进行转换(segfault),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63181831/
我看到了其他 boost::lexical_cast 问题的一些答案,断言以下是可能的: bool b = boost::lexical_cast("true"); 这不适用于 g++ 4.4.3 b
我已经看到其他 boost::lexical_cast 问题的一些答案,这些问题断言以下是可能的: bool b = boost::lexical_cast("true"); 这不适用于 g++ 4.
boost::lexical_cast 在将字符串转换为 int8_t 时抛出异常,但 int32_t - 正常。 int8_t 有什么问题? #include #include #include
我正在尝试扩展 lexical_cast 以处理 string->cv::Point 转换,代码如下: #include #include #include #include #include
我在这个话题中看到C++ convert hex string to signed integer boost::lexical_cast 可以将字符串中的十六进制转换为另一种类型(int、long.
我想扩展 lexical_cast vector 的方法类型,但它不起作用。我尝试了以下代码: #include namespace boost { template <> inli
我是 boost::lexical_cast 的新手,对其内部结构了解甚少。我正在尝试进行以下转换: string someString = boost::lexical_cast(sourceStr
我正在尝试构建一个将程序设置存储为 std::map 的类。由于所有程序设置都存储为字符串,因此我想要一个可以返回转换为相关类型的程序设置的访问器方法。我刚接触 C++ 模板,这是我的第一次尝试: c
我在两个不同的设备上有相同版本的 boost ,但行为不同 lexical_cast("-1") 文档指出它应该给我 INT_MAX(2 的补码翻转)但是在一台机器上我得到一个异常抛出而在另一台机器上
我有一个(也许)关于复合类型的 boost::lexical_cast 的简单问题(在我的例子中是 std::vector。 我的第一个模板化字符串化函数版本如下 template std::str
我遇到了转换问题,希望得到您的帮助。我正在使用 gcc4 编译器,但我对 gcc4 的使用非常有限。 我想将 std::string 转换为 double。 std::string aQuantity
我有一种情况,我正在获取命令行参数并使用 boost::lexical_cast(my_param) .我希望 my_param 的负值会导致 lexical_cast 抛出,但它会愉快地转换它们,-
我正在使用 boost::lexical_cast(double)用于将 double 转换为字符串,生成 JSON 序列化字节流,即(在远程端)由 .NET 解析。 我能够强制 .NET 使用 In
我实际上没能在 boost 文档中找到这个问题的答案。我对在多线程环境中使用 atof 有点偏执,所以一个建议是用 lexical_cast 替换调用。 lexical_cast 是线程安全的吗? 最
我正在为 C++ 使用 boost 库,函数 lexical_cast 的行为非常奇怪。如果我执行 lexical_cast("0.07513994") 它工作正常,但如果我使用我需要转换的变量,它会
编译以下内容: // file main.cpp #include #include int main() { boost::lexical_cast( 656.16 ); ret
以 bool 变量作为输入的 boost::lexical_cast 的输出预计为 0 或 1 值(value)。但是我得到了不同的值。 这不是正常发生的事情。让我们看一下我编写的示例代码: #inc
我查看了 lexical_cast.hpp 的困惑情况,但它仍然让我无法理解。 lexical_cast 的“基本定义”采用模板源和目标,如何能够接受诸如 lexical_cast("7") 之类的语
我正在参加一项挑战,为了切入主题,在我的程序中的一个地方,我需要将字符串转换为整数。我试过 boost::lexical_cast 但不幸的是它太慢了www。我想是因为它执行的所有检查。我需要的是无需
忽略 boost::lexical_cast 的异常是否安全?将 int 转换为 std::string 时? 最佳答案 将 int 转换为 std::string 时词法转换引发的异常与转换无关,但
我是一名优秀的程序员,十分优秀!