gpt4 book ai didi

c++ - 标准流打印无关字符

转载 作者:太空狗 更新时间:2023-10-29 21:48:58 25 4
gpt4 key购买 nike

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

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;

最佳答案

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

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

要修复它,请使用

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

相反。

关于c++ - 标准流打印无关字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9546834/

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