问题标签 [lexical-cast]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 通过 boost::lexical_cast 将 C++Builder AnsiString 转换为 std::string
对于学校作业,我必须使用 Borland C++ Builder 在 C++ 中实现一个项目。
由于 VCL 对所有 GUI 组件使用 AnsiString,我必须将所有 std::strings 转换为 AnsiString 以便显示。
当然可以,但是我想避免编写和代码重复有点乏味。当我们在其他上下文中使用 Boost 时,我决定提供一些帮助函数 go get boost::lexical_cast 来使用 AnsiString。到目前为止,这是我的实现:
一开始我在访问冲突之后得到了访问冲突,但是由于我添加了 .exceptions() 东西,所以图片变得更清晰了。执行转换时,我得到以下异常:
有谁知道如何解决它并可以解释为什么会发生错误?我的 C++ 经验非常有限。
反过来,转换例程将是:
也许有人也会在这里发现错误:)
最诚挚的问候!
编辑:
目前我正在使用 Jem 的编辑版本,它在一开始就可以工作。在使用该程序一段时间后,Borland Codeguard 在已经释放的区域中提到了一些指针算法。任何想法这怎么可能相关?
Codeguard 日志(我使用的是德文版本,译文标有星号):
Ansistringkonverter.h 是带有已发布运算符的文件,第 31 行是:
谢谢你的帮助 :)
c++ - 非常差的 boost::lexical_cast 性能
视窗 XP SP3。酷睿 2 双核 2.0 GHz。我发现 boost::lexical_cast 的性能非常慢。想找出加快代码速度的方法。在 Visual c++ 2008 上使用 /O2 优化并与 java 1.6 和 python 2.6.2 进行比较,我看到以下结果。
整数转换:
我看到的时代是
c++: 6700 毫秒
java: 1178 毫秒
蟒蛇:6702毫秒
c++ 和 python 一样慢,比 java 慢 6 倍。
双铸:
我看到的时代是
c++: 56129 毫秒
java: 2852 毫秒
蟒蛇:30780毫秒
所以对于 doubles,c++ 实际上是 python 速度的一半,比 java 解决方案慢 20 倍!!。关于提高 boost::lexical_cast 性能的任何想法?这是否源于糟糕的字符串流实现,或者我们是否可以预期使用 boost 库会导致性能普遍下降 10 倍。
c++ - 如何扩展词法转换以支持枚举类型?
我有以下函数将字符串转换为数字数据类型:
但是,这不适用于枚举类型,所以我做了这样的事情:
(我假设 theString 对枚举类型具有有效值;我主要将其用于简单的序列化)
有没有办法创建一个结合这两者的单一功能?
我玩了一些模板参数,但没有想出任何东西;不必为枚举类型调用一个函数而为其他所有类型调用另一个函数会很好。
谢谢
c++ - 如何使用 boost lexical_cast 库仅用于检查输入
我经常使用 boost lexical_cast 库将文本数据解析为数值。然而,在某些情况下,我只需要检查值是否为数字;我实际上不需要或使用转换。
所以,我正在考虑编写一个简单的函数来测试字符串是否为双精度:
我的问题是,是否有任何优化编译器会在这里删除 lexical_cast,因为我从未真正使用过该值?
有没有更好的技术来使用 lexical_cast 库来执行输入检查?
c++ - 结合 boost::lexical_cast 和 std::transform
我想写这样的东西,不能编译:
但这不起作用,所以我创建了一个仿函数,它正在为我做这件事:
有没有更简单的方法来做到这一点?
c++ - boost lexical_cast 抛出异常
我正在为 c++ 使用 boost 库,函数 lexical_cast 的行为非常奇怪。如果我做 lexical_cast("0.07513994") 它工作正常,但如果我使用我需要转换的变量,它会抛出 bad_lexical_cast 异常。这是代码:
我在这里做错了什么?感谢您的帮助,谢谢
c++ - lexical_cast int 到字符串
boost::lexical_cast
转换为时忽略异常是否int
安全std::string
?
c++ - lex_cast:制作格式化流,未格式化
我曾经在下面看到这个漂亮的小代码片段,在这里:
这模仿了 boost::lexical_cast。用法:
但是,由于格式化流的默认跳过,以下将无法按预期工作:
(我预计 \n 会有类似的问题)。我曾尝试设置 noskipws 和模板专业化,但无济于事。请指教。
c++ - 如何使用 boost::lexical_cast 和 std::boolalpha?即 boost::lexical_cast< bool >("true")
我已经看到了一些其他boost::lexical_cast
问题的答案,这些答案断言以下是可能的:
这不适用于 g++ 4.4.3 boost 1.43。(也许它确实可以在std::boolalpha
默认设置的平台上运行)
这是 string to bool 问题的一个很好的解决方案,但它缺少 boost::lexical_cast 提供的输入验证。
g++ - stringstream:为什么“showpoint”的行为与“fixed”相似?
我想写我自己的,它在转换lexical_cast
为时保留小数点。所以我正在使用并设置标志:double
std::string
ostringstream
std::ios::showpoint
但是,这会打印不必要的 0 数字,这是我期望设置std::ios::fixed
但不是的行为std::ios::showpoint
:
没有设置std::ios::showpoint
它给出
但我想要这样的东西:
有什么简单的方法吗?