标准流打印不相关字符
Standard Stream Printing Unrelated Characters
我正在编写一些代码,在某些情况下我的代码无法正常工作,所以我决定将一些输出写入文件进行调试。该程序只是将字符串中的一些字符连接起来(并且没有越界),并将它们打印到文件中。它没有错误报告之类的东西,输入字符串只是一堆随机字符。但是,我在输出中得到了一些垃圾,例如:
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
是string
,因此tri[center]
是char
""
的类型是const char[]
,不能添加到char
中
相反,它被隐式转换为const char*
,可以将其添加到char
中。
不幸的是,这样做的结果是,tri[center]
的整数值作为偏移量添加到指针,而不是字符串串联,结果所指的特定内存区域不包含您要查找的内容,而是包含其他静态字符串,例如"读取文件时出错"。
要修复它,请使用
string op=string(")+tri[center];
相反。
我在另一个程序中遇到了同样的问题,我在其中写道:
str += blablabla + "#";
我看到一些不相关的字符被打印出来。我是这样修复的:
str = str + blablabla + "#";
它成功了!
string
的+=
算子存在一些问题。
相关文章:
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 虚假唤醒是否会解锁所有等待线程,甚至是不相关的线程?
- std::less是否应该允许在编译时比较不相关的指针?
- 0 的 2D 数组 不相关循环的破坏逻辑 - C++
- 为什么数组到指针的输出不相关
- 如何使用模板元编程在自由函数C++链接两个不相关的类
- 为什么在使用不相关的宏时会阻止 while 循环结束?
- 为什么当我从 cin 阅读时转义字符不起作用?
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法
- 强制转换为不相关的引用类型是否违反严格的别名规则?
- 为什么我的代码在添加不相关的代码行后工作方式不同?
- 为字符串中的每个字符(不是字符位置!)分配唯一的索引
- 尝试编写函数尝试从字符串中提取数字,但它返回不相关的数字
- VSCODE C++ IntelliSense为替代定义找到不相关的Yocto Sysroots
- 什么保证两个不相关的线程中的不同不相关对象没有(不可避免的)争用条件?
- 对类型 'A *' 的非常量左值引用不能绑定到不相关的类型 'std::shared_ptr<A>' 的值
- 将函数从控制台应用程序移动到共享库项目似乎会带来不相关的编译错误
- 将不相关类型的对象reinterpret_cast空类是未定义的行为吗?
- 标准流打印不相关字符
- 为什么分配一个不相关的字符串会导致另一个字符串被修改