很抱歉,我知道这是一个基本问题,但是我在任何地方都找不到答案。也许我没有意识到关键词。问题是:
我想从用户那里获取输入,这些输入将存储在check[]
数组中,然后通过它查看输入是否有效(如果类似于SpaceSpace+0000[i=1-5]
,则有效)。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <iomanip>
#include <string>
#include <cstring>
void main(){
char check[7];
for(i=0;i<7;i++){
check[i]='1';
};
//int check[4];
cin.getline(check,4);
bool cond=1;
for(i=0;i<7;i++){
cout<<check[i];
};
}
但是当我打印(cout
)数组时,我意识到:输入是33
,array[]
是"
33 '
空格{{1 }},我的问题是输出中的空格是什么意思,以及如何处理(忽略,删除或其他任何内容)。
答案 0 :(得分:0)
问题是istream::getline
读取输入,然后将 以空值结尾的 字节字符串写入数组。
您所看到的“空格”就是空终止符'\0'
。
如果您想读取原始的未格式化字符,请改为使用循环一次读取one character(检查eof
和换行符)
char ch;
// Read up to four character, or until there's an error or end-of-file,
// or until you get a newline
for (unsigned i = 0; i < 4 && cin.get(ch) && ch != '\n'; ++i)
{
check[i] = ch;
}