Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 导致程序返回奇怪符号的未知错误_C++ - Fatal编程技术网

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

C++ 导致程序返回奇怪符号的未知错误,c++,C++,我写了一个非常基本的程序来分离输入字符串中的元音。 该程序正在分离元音,但也返回奇怪的符号/字母 我真的不明白为什么会这样!救命啊 输出>> aoeeo x╘E⌡ì 每次我运行它时,它都会生成不同的字母(?) 代码>> #include <iostream> #include <vector> #include <string> using namespace std; int main(){ string input = "stackoverflow"

我写了一个非常基本的程序来分离输入字符串中的元音。 该程序正在分离元音,但也返回奇怪的符号/字母

我真的不明白为什么会这样!救命啊

输出>>

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 ;
}
#包括
#包括
#包括
使用名称空间std;
int main(){
string input=“stackoverflow”;
向量元音={'a','e','i','o','u'};
矢量结果;
对于(int i=0;icout您可以从未分配的内存中读取。元音存储在结果向量中,该结果向量小于输入向量。将打印循环更改为:

for(int i = 0 ; i < result.size() ; i++){
cout << result[i];
for(int i=0;icout您可以从未分配的内存中读取。元音存储在结果向量中,该结果向量小于输入向量。将打印循环更改为:

for(int i = 0 ; i < result.size() ; i++){
cout << result[i];
for(int i=0;icout note:这个问题可以通过
for(auto ch:result)来避免。cout note:这个问题可以通过
for(auto ch:result)来避免。cout note:这个问题可以通过
for(auto ch:result)来避免,因为“stackoverflow”中只有四个元音,没有一个是“u”或“e”,所以
result
在打印之前有大小4。但是,最后一个循环使用
input.size()
为了控制循环打印
结果的元素,所以打印一个包含四个字符的向量的13个字符。这给出了未定义的行为“stackoverflow”中只有四个元音,没有一个是“u”或“e”,所以
结果在打印前大小为4。但是,最后一个循环使用
输入.size()
控制循环打印
结果的元素,因此打印一个包含四个字符的向量的13个字符。这会产生未定义的行为