1094570635 发表于 2022-11-25 07:58:30

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型数组却不可以,是为什么呢

人造人 发表于 2022-11-25 10:06:13

因为库里面没有这样的函数
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));

人造人 发表于 2022-11-25 10:20:50

是这个函数,库里面有这个函数,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]
查看完整版本: cin输入数组类型的问题