标准流打印不相关字符

Standard Stream Printing Unrelated Characters

本文关键字:字符 不相关 打印 标准      更新时间:2023-10-16

我正在编写一些代码,在某些情况下我的代码无法正常工作,所以我决定将一些输出写入文件进行调试。该程序只是将字符串中的一些字符连接起来(并且没有越界),并将它们打印到文件中。它没有错误报告之类的东西,输入字符串只是一堆随机字符。但是,我在输出中得到了一些垃圾,例如:

f::xsgetn error reading the file
sgetn error reading the file
ilebuf::xsgetn error reading the file

(我删除了程序的输出,这只是额外的东西。)

据我所知,如果有任何错误,必须抛出异常。发生了什么,我该如何解决?

当我使用标准输出打印输出时,也会发生同样的情况。所有使用的库都是标准库(例如iostream、fstream等)

PS:由于某些原因,我无法发布所有代码。这是创建输出并将其传递到流的部分:(tri是和字符串,并且是以前定义的。Center是一个整数,在字符串的边界内。fout是以前定义过的文件流。)

string op = "" + tri[center];
fout << center << "<>" << op << endl;

由于tristring,因此tri[center]char
""的类型是const char[],不能添加到char
相反,它被隐式转换为const char*可以将其添加到char中。

不幸的是,这样做的结果是,tri[center]的整数值作为偏移量添加到指针,而不是字符串串联,结果所指的特定内存区域不包含您要查找的内容,而是包含其他静态字符串,例如"读取文件时出错"。

要修复它,请使用

string op=string(")+tri[center];

相反。

我在另一个程序中遇到了同样的问题,我在其中写道:

str += blablabla + "#";

我看到一些不相关的字符被打印出来。我是这样修复的:

str = str + blablabla + "#";

它成功了!

string+=算子存在一些问题。

相关文章: