导致程序返回奇怪符号的未知错误
Posted
技术标签:
【中文标题】导致程序返回奇怪符号的未知错误【英文标题】:unknown bug causing program to return weird symbols 【发布时间】:2019-08-05 09:59:51 【问题描述】:我编写了一个非常基本的程序来将元音从输入字符串中分离出来。 该程序正在分离元音,但也返回奇怪的符号/字母!
我真的找不到它发生的原因!帮忙!
输出>>
aoeeo x ╘E⌡óì
每次我运行它都会生成不同的字母(?)!
代码>>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
string input = "***";
vector<char> vowels = 'a','e','i','o','u';
vector<char> result;
for(int i = 0 ; i < input.size() ; i++)
for(int j = 0; j < vowels.size(); j++)
if(input[i] == vowels[j])
result.push_back(input[i]);
if (input[i] == 'u' || input[i] == 'e')
result.push_back(input[i]);
for(int i = 0 ; i < input.size() ; i++)
cout << result[i];
return 0 ;
【问题讨论】:
"***" 中只有四个元音,没有一个是 'u' 或 'e',所以result
打印前的大小为 4。但是,最后一个循环使用input.size()
来控制循环打印result
的元素,因此打印一个带有四个字符的向量的13 个字符。这给出了未定义的行为
【参考方案1】:
您从未分配的内存中读取。元音存储在小于输入向量的结果向量中。将打印循环更改为:
for(int i = 0 ; i < result.size() ; i++)
cout << result[i];
【讨论】:
注意:使用for (auto ch : result) cout << ch;
可以避免这个问题以上是关于导致程序返回奇怪符号的未知错误的主要内容,如果未能解决你的问题,请参考以下文章
ReSharper WPF 错误:“由于未知 DataContext,无法解析符号“MyVariable””
未知错误:由于未知错误导致页面崩溃,会话被删除:无法从 ChromeDriver Selenium 崩溃的选项卡中确定加载状态
Discord.js DiscordAPI 错误:未知表情符号 - 对嵌入做出反应