gpt4 book ai didi

c++ - 管道输出后出现 ^@ 符号 (C++)

转载 作者:太空宇宙 更新时间:2023-11-03 10:33:06 27 4
gpt4 key购买 nike

所以我已经用 C++ 实现了算法简介 (CLRS) 中的最长公共(public)子序列算法,它运行良好,有点。当我做这样的事情时:

./lcs abc bc > 输出

当我在 vim 中打开 OUTPUT 文件时,我看到了:

2 bc^@

这是正确的,没有那个奇怪的 ^@ 符号。我做了一些谷歌搜索,这似乎是某种 NULL 字符?

我以前从未遇到过这个问题..有人知道如何摆脱它吗?

谢谢!-构造

编辑这是执行打印的代码:

cout << lcsLength << " ";
if (lcsLength > 0) cout << lcsString;

return 0;

其中 lcsString 是一个 std::string。不确定这是否有帮助...

最佳答案

您已经展示了输出 lcsString 的代码,但与 C 风格的字符串不同,std::string 类型可以包含空字符,因为长度与字符串数据本身分开维护。

尝试添加以下内容以转储字符串的内容:

cout << "length of lcsString: " << lcsString.length() << endl;
cout << '"' << lcsString << '"' << endl;
for (int i = 0; i < lcsString.length(); ++i) {
cout << hex << int(lcsString[i]) << " ";
}
cout << endl;

我打赌你会看到:

length of lcsString: 3
"bc "
62 63 0

然后您需要了解您正在做什么来创建(或修改)lcsString,使其末尾包含一个空字符。

关于c++ - 管道输出后出现 ^@ 符号 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10713287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com