在C stdlib.h中找到了'string to X'函数的Tcl中的等价物吗?

时间:2011-08-22 16:07:37

标签: tcl

在C atof中有一些标准函数,例如atoistdlib.h,用于将字符串转换为浮点数/整数(并且反过来也是如此)。在Tcl中是否有相同的内容,或者我是否需要编写自己的流程来执行这些任务?

5 个答案:

答案 0 :(得分:9)

在Tcl中

Everything is a string,但是期望数字的函数(例如expr)将使用该字符串'作为整数:

% set str " 123 "
 123
% set num [expr $str*2]
246

如果您想以特定方式格式化数字(例如生成浮动特定精度的点数),那么您可以使用format

% set str " 1.234 "
 1.234
% set fnum [format "%.2f" $str]
1.23

答案 1 :(得分:2)

如上所述,Tcl中的所有内容都是字符串,因此您可以将给定字符串用作整数或其他任何您需要的字符串。唯一需要注意的是它需要被解释为你想要用它的东西(即,你可以使用“a”作为整数)

您可以使用string is子命令测试是否可以将某些内容解释为您想要的类型:

string is integer "5" ;# true
string is integer "a" ;# false
string is list "a b cc" ;# true
string is list "{a b}c" ;# false

答案 2 :(得分:1)

我还应该注意,atofatoi的等效项可以被视为内部Tcl数据结构转换为外部二进制表示。这是由[binary format]命令完成的。

答案 3 :(得分:0)

在表达式中使用$ x之前,可以测试string is double $x

例如,[string is double 1.2.3]返回0

答案 4 :(得分:-2)

就我而言,这段代码有效:

set a [string trimleft $a 0]