导致程序返回奇怪符号的未知错误

Tri*_*ixy 0 c++

我写了一个非常基本的程序,将元音与输入字符串分开。该程序不仅分离元音,而且还返回奇怪的符号/字母!

我真的找不到原因。救命!

输出>>

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 ;
}
Run Code Online (Sandbox Code Playgroud)

Pio*_*ski 5

您从未分配的内存中读取。元音被存储在小于输入向量的结果向量中。将您的打印循环更改为:

for(int i = 0 ; i < result.size() ; i++){
cout << result[i];
Run Code Online (Sandbox Code Playgroud)

  • 注意:这个问题可以通过`for(auto ch:result)cout &lt;&lt; ch;`来避免。 (2认同)