我创建了一个函数来将字符串存储在没有空格和标点符号的数组中:
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?对不起,我是新手。 感谢。
答案 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];
}