C++ 导致程序返回奇怪符号的未知错误
我写了一个非常基本的程序来分离输入字符串中的元音。 该程序正在分离元音,但也返回奇怪的符号/字母 我真的不明白为什么会这样!救命啊 输出>> aoeeo x╘E⌡ì 每次我运行它时,它都会生成不同的字母(?) 代码>>C++ 导致程序返回奇怪符号的未知错误,c++,C++,我写了一个非常基本的程序来分离输入字符串中的元音。 该程序正在分离元音,但也返回奇怪的符号/字母 我真的不明白为什么会这样!救命啊 输出>> aoeeo x╘E⌡ì 每次我运行它时,它都会生成不同的字母(?) 代码>> #include <iostream> #include <vector> #include <string> using namespace std; int main(){ string input = "stackoverflow"
#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;i cout您可以从未分配的内存中读取。元音存储在结果向量中,该结果向量小于输入向量。将打印循环更改为:
for(int i = 0 ; i < result.size() ; i++){
cout << result[i];
for(int i=0;i cout您可以从未分配的内存中读取。元音存储在结果向量中,该结果向量小于输入向量。将打印循环更改为:
for(int i = 0 ; i < result.size() ; i++){
cout << result[i];
for(int i=0;i cout 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个字符。这会产生未定义的行为