【发布时间】:2019-08-05 09:59:51
【问题描述】:
我编写了一个非常基本的程序来将元音从输入字符串中分离出来。 该程序正在分离元音,但也返回奇怪的符号/字母!
我真的找不到它发生的原因!帮忙!
输出>>
aoeeo x ╘E⌡óì
每次我运行它都会生成不同的字母(?)!
代码>>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(){
string input = "stackoverflow";
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 ;
}
【问题讨论】:
-
"stackoverflow" 中只有四个元音,没有一个是 'u' 或 'e',所以
result打印前的大小为 4。但是,最后一个循环使用input.size()来控制循环打印result的元素,因此打印一个带有四个字符的向量的13 个字符。这给出了未定义的行为
标签: c++