cin输入数组类型的问题
代码#include<iostream>
using namespace std;
int main()
{
char ch;
cin >> ch;
cin >> ch + 1;
cout << ch << endl;
cout << ch << endl;
/*int INT;
cin >> INT + 1;
*/
return 0;
}
看到了出入char型数组的时候可以不用加[],而int型数组却不可以,是为什么呢 因为库里面没有这样的函数
template <size_t num>
istream &operator>>(istream &is, int (&a));
#include <iostream>
using namespace std;
template <size_t num>
istream &operator>>(istream &is, int (&a)) {
for(auto &i: a) {
if(!(is >> i)) break;
}
return is;
}
int main() {
char ch;
cin >> ch;
int a;
cin >> a;
return 0;
}
cin >> ch;
这个能用是因为库里面有像下面这样的函数
template <size_t num>
istream &operator>>(istream &is, char (&a)); 是这个函数,库里面有这个函数,C++20引入的
参考:https://zh.cppreference.com/w/cpp/io/basic_istream/operator_gtgt2
template <class CharT, class Traits, std::size_t N>
basic_istream<CharT, Traits> &operator>>(basic_istream<CharT, Traits> &st, CharT (&s));
页:
[1]