getline() and char array

getline() and char array

本文关键字:char array and getline      更新时间:2023-10-16

很抱歉,我知道这是一个基本问题,但我在任何地方都找不到答案。也许我没有意识到关键词。问题是:

我想从用户那里获取输入,这些输入将存储在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)数组时,我意识到这一点:输入是33array[]"33'空间'1111",我这里的问题是输出中的空格是什么意思以及我如何处理它(忽略、删除或任何东西)。

问题是istream::getline读取输入,然后将一个以 null 结尾的字节字符串写入数组。

您看到的"空格"只是空终止符''

如果要读取原始的无格式字符,请使用循环一次读取一个字符(检查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;
}