#include<iostream>
using namespace std;
int main()
{
int i=0,j=0;
string a,v;
cin>>a;
while(a[i]!='\0')
{
if(a[i]=='a' || a[i]=='e' || a[i]=='i' || a[i]=='o' || a[i]=='u' )
{
v[j]=a[i];
j++;
}
i++;
}
cout<<v;
return 0;
}
当我尝试打印 v 时,什么也没有打印出来,我不知道为什么! 但是,当我尝试使用 while 循环遍历每个字符来打印 v 时,将打印正确的输出。我想知道为什么??
最佳答案
使用 .at() 而不是 [],它会进行边界检查,并且可能会为您检测到此错误。
您的问题是您有一个未确定空间的字符串“v”,并且您要附加到“v”的任意索引。
解决方案是将附加到 v 的代码替换为:
v += a.at(i);
有了这个,您还以第二个迭代器 j 的形式消除了一些复杂性。
或
您可以在 v 中保留空间,以便 [index] 操作起作用。所以一开始你可以这样做:
cin>>a;
v.reserve(a.size())
关于c++ - 从字符串数据类型的字符串中分离元音并将其存储在新字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44495463/