将 seq[char] 转换为字符串

Converting a seq[char] to string

我的情况是 seq[char],像这样:

import sequtils
var s: seq[char] = toSeq("abc".items)

s 转换回字符串(即 "abc")的最佳方法是什么?用 $ 进行字符串化似乎得到 "@[a, b, c]",这不是我想要的。

import sequtils, strutils
var s: seq[char] = toSeq("abc".items)
echo(s.mapIt(string, $it).join)

Join 仅适用于 seq[string],因此您必须先将其映射到字符串。

最有效的方法是自己编写程序。

import sequtils
var s = toSeq("abc".items)

proc toString(str: seq[char]): string =
  result = newStringOfCap(len(str))
  for ch in str:
    add(result, ch)

echo toString(s)

您也可以尝试使用强制转换:

var s: seq[char] = @['A', 'b', 'C']
var t: string = cast[string](s)
# below to show that everything (also resizing) still works:
echo t
t.add('d')
doAssert t.len == 4
echo t
for x in 1..100:
  t.add('x')
echo t.len
echo t