将字符串存储在数组中

时间:2016-03-08 05:34:51

标签: c++

我创建了一个函数来将字符串存储在没有空格和标点符号的数组中:

int main()
{
    char arr[1];int b,i=0;
    bool newl = false;
    for(;!newl;)
    {
        arr[i]=cin.get();
        b = arr[i];
        if(b>=65&&b<=90) i++;
        else if(b>=97&&b<=122) i++;
        if(arr[i]=='\n') newl =true;
    }
    for(int j=0;j<i;j++)
    cout << arr[j];
}

这对我来说似乎很合乎逻辑但是当我测试它时,它的行为并没有像我预期的那样只有1个角色可以,但更多的是它真的错了。是因为cin.get?对不起,我是新手。 感谢。

1 个答案:

答案 0 :(得分:0)

您只为arr分配了一个元素,因此禁止访问arr[1]或更远。

std::vector可用作可变长度数组。

另外,我建议您使用库isalpha()中的cctype,而不是对比较难以理解且依赖于字符代码的幻数。

#include <iostream>
#include <vector>
#include <cctype>
using std::cin;
using std::cout;

int main()
{
    std::vector<char> arr;int b,i=0;
    bool newl = false;
    for(;!newl;)
    {
        b = cin.get(); // store the input directly into b
        if(isalpha(b)) arr.push_back(b);
        if(b=='\n') newl = true;
    }
    for(size_t j=0;j<arr.size();j++)
        cout << arr[j];
}