^@管道输出后出现的符号(C++) 我在C++中引入了算法书CLSR的最长公共子序列算法,它工作得很好,有点。当我这样做的时候:

^@管道输出后出现的符号(C++) 我在C++中引入了算法书CLSR的最长公共子序列算法,它工作得很好,有点。当我这样做的时候:,c++,pipe,lcs,C++,Pipe,Lcs,/lcs abc bc>输出 当我在vim中打开输出文件时,我看到: 公元前2年^@ 这是正确的,没有那个奇怪的^@符号。我在谷歌上搜索了一下,这似乎是某种空字符 我以前从未遇到过这个问题。。有人知道如何摆脱它吗 谢谢! -卡车 编辑 以下是进行打印的代码: cout << lcsLength << " "; if (lcsLength > 0) cout << lcsString; return 0; 其中lcsString是一个std::

/lcs abc bc>输出

当我在vim中打开输出文件时,我看到:

公元前2年^@

这是正确的,没有那个奇怪的^@符号。我在谷歌上搜索了一下,这似乎是某种空字符

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

谢谢! -卡车

编辑 以下是进行打印的代码:

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

return 0;
其中lcsString是一个std::string。不确定这是否有帮助…

这是NUL,它是一个字符值,定义为所有位零,而不是NULL(指针),几乎总是所有位零,但不需要

我们需要查看您的代码才能确定,但最有可能的原因是您打印了一个C字符串的一个字节,它的最后一个字节总是NUL,而不是您应该打印的。

这是NUL,它是一个字符值,定义为所有位零,而不是NULL(指针),几乎总是所有位零,但不需要


我们需要查看您的代码才能确定,但最可能的原因是,您打印的C字符串的最后一个字节总是NUL。

您已经显示了输出lcsString的代码,但与C样式字符串不同,字符串类型可以包含空字符,因为长度是与字符串数据本身分开维护的

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

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;

然后,您需要了解如何创建或修改lcsString,使其结尾包含空字符。

您已经展示了输出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;

然后,您需要了解如何创建或修改lcsString,使其结尾包含空字符。

发布输出2 bc的代码行。我们需要查看将哪些字符添加到字符串中。您的字符串中包含一个文本ASCII NUL。请注意,std::string允许包含在其中努尔斯。如果你运行forint i=0;i