c++ - 从字符串数据类型的字符串中分离元音并将其存储在新字符串中

标签 c++ string

#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/

相关文章:

c++ - 求解 D 给定 A、B、C 和 C-D 的长度,平行于 A-B

android - SuperpoweredAndroidAudioIO环回,只输出到左耳

c++ - 如何在 iOS 中使用 Opencv 检测嘴唇边缘?

ios - Swift - 如何使 UILabel 像主题标签一样可点击并区分相同的文本?

java - 使用 Java 中的一组固定字母将 long 编码/解码为字符串

string - Bash:检查字符串是否包含特定的字母和逗号

c++ - 从文本文件创建二维字符串 vector

c - 如果我只传递一个变量,为什么 printf() 会崩溃?

c++ - 在 Visual Studio C++ 构建中打印日期和时间?

c++ - 如何在ubuntu的ns2模拟器中实现DSR协议(protocol)