C++ 数组不存储在第一个空间之外

C++ 数组不存储在第一个空间之外,c++,arrays,input,character,C++,Arrays,Input,Character,通过temp提供的输入是一个句子,我需要删除空格和特殊字符,但“mes”只存储第一个单词 #include <iostream> #include <cmath> using namespace std; int main(){ char mes[51]; char pas[11]; char tem[51]; cin.getline(tem,51); cin.getline(pas,11); for(int i=0;i<51;i++){ mes[i]='\

通过temp提供的输入是一个句子,我需要删除空格和特殊字符,但“mes”只存储第一个单词

#include <iostream>
#include <cmath>
using namespace std;
int main(){
char mes[51];
char pas[11];
char tem[51];
cin.getline(tem,51);
cin.getline(pas,11);
for(int i=0;i<51;i++){
    mes[i]='\0';
}
for(int t=0;t<sizeof(pas);t++){
    pas[t]=tolower(pas[t]);
}
for (int i=0;i<50;i++){
    char c=tem[i];
    int ch=(int)c;
    if(( ch >= 65 && ch <= 90) || ( ch >= 97 && ch <= 122)){
        if( ch >= 65 && ch <= 90)
            ch+=32;
        mes[i]=(char)ch;
    }
    else
        continue;
}
cout<<mes<<endl;
#包括
#包括
使用名称空间std;
int main(){
char-mes[51];
char-pas[11];
char-tem[51];
cin.getline(tem,51);
cin.getline(pas,11);

对于(int i=0;i请注意,您正在将
mes
中的每个索引设置为
'\0'
,也称
NUL
。当您在
tem
中迭代检查每个字符是否为字母时,您无意中在
mes
中通过
\0
分隔单词。您需要有一个单独的索引,允许您添加t当你找到信时,他会给你写信

您的
for
循环可能如下所示

int currentIndex = 0;
for (int i = 0; i < 50; i++){
    char c = tem[i];
    int ch = (int)c;
    if(( ch >= 65 && ch <= 90) || ( ch >= 97 && ch <= 122)){
        if( ch >= 65 && ch <= 90)
            ch+=32;
        mes[currentIndex++]=(char)ch;
    }
    else
        continue;
}
int currentIndex=0;
对于(int i=0;i<50;i++){
char c=tem[i];
int ch=(int)c;

if((ch>=65&&ch=97&&ch=65&&ch)应该有用:无关:
ch>=65
对读者来说包含的信息最少。它也完全依赖于使用的ASCII编码,通常是一种安全的赌注,但为什么要赌博呢?更喜欢
ch>=a'