C/C++编程:字符流输入流std :: istream

本文详细介绍了 C++ 中 istream 类的功能与用法,包括如何构造输入流对象、使用运算符提取格式化输入、获取字符数、提取单个字符及字符数组等内容,并通过实例演示了如何利用 istream 类进行文本处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

std :: istream

typedef basic_istream<char> istream;

Input stream

输入流对象可以读取和解释字符序列的输入

这是一个basic_istream实例 具有以下模板参数:

模板参数定义评论
charTchar成员char_type的别名 
traitschar_traits<char>成员traits_type的别名 

 

std :: istream::istream

initialization (1)
explicit istream (streambuf* sb);
copy (2)
istream& (const istream&) = delete;
move (3)
protected: istream& (istream&& x);

作用:构造对象

// istream constructor
#include <iostream>     // std::ios, std::istream, std::cout
#include <fstream>      // std::filebuf

int main () {
  std::filebuf fb;
  if (fb.open ("test.txt",std::ios::in))
  {
    std::istream is(&fb);
    while (is)
      std::cout << char(is.get());
    fb.close();
  }
  return 0;
}

std :: istream::operator>>

arithmetic types (1)
istream& operator>> (bool& val);
istream& operator>> (short& val);
istream& operator>> (unsigned short& val);
istream& operator>> (int& val);
istream& operator>> (unsigned int& val);
istream& operator>> (long& val);
istream& operator>> (unsigned long& val);
istream& operator>> (long long& val);
istream& operator>> (unsigned long long& val);
istream& operator>> (float& val);
istream& operator>> (double& val);
istream& operator>> (long double& val);
istream& operator>> (void*& val);
stream buffers (2)
istream& operator>> (streambuf* sb );
manipulators (3)
istream& operator>> (istream& (*pf)(istream&));
istream& operator>> (ios& (*pf)(ios&));
istream& operator>> (ios_base& (*pf)(ios_base&));

作用:提取格式化的输入

#include <iostream>     // std::cin, std::cout, std::he

int main () {
    int n;

    std::cout << "Enter a number: ";
    std::cin >> n;
    std::cout << "You have entered: " << n << '\n';

    std::cout << "Enter a hexadecimal number: ";
    std::cin >> std::hex >> n;
    std::cout << "Its decimal equivalent is: " << n << '\n';
    return 0;
}

std :: istream::gcount

streamsize gcount()const;

作用:获取字符数

#include <iostream>  // std::cin, std::cout

int main () {
    char str[20];

    std::cout << "Please, enter a word: ";
    std::cin.getline(str, 20);
    std::cout << std::cin.gcount() << " characters read: " << str << "\n";
    return 0;
}

std :: istream::get

single character (1)
int get();
istream& get (char& c);
c-string (2)
istream& get (char* s, streamsize n);
istream& get (char* s, streamsize n, char delim);
stream buffer (3)
istream& get (streambuf& sb);
istream& get (streambuf& sb, char delim);

作用:从流中提取字符,作为未格式化的输入

#include <iostream>     // std::cin, std::cout
#include <fstream>      // std::ifstream

int main () {
    char str[256];

    std::cout << "输入现有文本文件的名称: ";
    std::cin.get (str,256);    // get c-string

    std::ifstream  is(str);

    char c;
    while (is.get(c)){
        std::cout << c;
    }

    is.close();

    return 0;
}

std :: istream::getline

istream&getline(char * s,streamsize n);
istream&getline(char * s,streamsize n,char delim);

作用:从标准输入流中获取行

从流中提取字符作为未格式化的输入,并将它们作为c字符串存储到s中,直到提取的字符是定界字符,或者将n个字符写入s(包括终止的空字符)为止

#include <iostream>     // std::cin, std::cout
#include <fstream>      // std::ifstream

int main () {
    char name[256], title[256];

    std::cout << "Please, enter your name: ";
    std::cin.getline(name, 256);

    std::cout << "Please, enter your favourite movie: ";
    std::cin.getline(title, 256);

    std::cout << name << "'s favourite movie is " << title;
    return 0;
}

std :: istream::ignore

istream& ignore (streamsize n = 1, int delim = EOF);

作用:提取并丢弃字符

从输入序列中提取字符并丢弃它们,直到提取出n个字符或一个等于delim的比较为止。

// istream::ignore example
#include <iostream>     // std::cin, std::cout

int main () {
    char first, last;

    std::cout << "Please, enter your first name followed by your surname: ";

    first = std::cin.get();     // get one character
    std::cin.ignore(256,' ');   // ignore until space

    last = std::cin.get();      // get one character

    std::cout << "Your initials are " << first << last << '\n';

    return 0;
}

std :: istream::peek

int peek();

作用:偷看下一个字符

返回输入序列中的下一个字符,而不提取该字符:保留该字符作为要从流中提取的下一个字符。

// istream::peek example
#include <iostream>     // std::cin, std::cout
#include <string>       // std::string
#include <cctype>       // std::isdigit

int main () {

  std::cout << "Please, enter a number or a word: ";
  std::cout.flush();    // ensure output is written

  std::cin >> std::ws;  // eat up any leading white spaces
  int c = std::cin.peek();  // peek character

  if ( c == EOF ) return 1;
  if ( std::isdigit(c) )
  {
    int n;
    std::cin >> n;
    std::cout << "You entered the number: " << n << '\n';
  }
  else
  {
    std::string str;
    std::cin >> str;
    std::cout << "You entered the word: " << str << '\n';
  }

  return 0;
}

std :: istream::read、std :: istream :: tellg、std :: istream :: seekg

istream&read(char * s,streamsize n);

作用:读取数据块

从流中 提取n个字符并将其存储在s指向的数组中。

streampos tellg();

作用:返回当前字符在输入流中的位置。

istream& seekg (streampos pos);
istream& seekg (streamoff off, ios_base::seekdir way);

作用:设置要从输入流中提取的下一个字符的位置

// read a file into memory
#include <iostream>     // std::cout
#include <fstream>      // std::ifstream

int main () {

  std::ifstream is ("test.txt", std::ifstream::binary);
  if (is) {
    // get length of file:
    is.seekg (0, is.end);
    int length = is.tellg();
    is.seekg (0, is.beg);

    char * buffer = new char [length];

    std::cout << "Reading " << length << " characters... ";
    // read data as a block:
    is.read (buffer,length);

    if (is)
      std::cout << "all characters read successfully.";
    else
      std::cout << "error: only " << is.gcount() << " could be read";
    is.close();

    // ...buffer contains the entire file...

    delete[] buffer;
  }
  return 0;
}

std :: istream::putback、std::istream::unget

istream& putback (char c);
istream& unget();

作用:放回字符

尝试将流中当前位置减少一个字符,使从流中提取的最后一个字符再次可用于输入操作

// istream::putback example
#include <iostream>     // std::cin, std::cout
#include <string>       // std::string

int main () {
    std::cout << "Please, enter a number or a word: ";
    char c = std::cin.get();

    if ( (c >= '0') && (c <= '9') )
    {
        int n;
        std::cin.putback (c);
      // std::cin.unget();
        std::cin >> n;
        std::cout << "You entered a number: " << n << '\n';
    }
    else
    {
        std::string str;
        std::cin.putback (c);
       //std::cin.unget();
        getline (std::cin,str);
        std::cout << "You entered a word: " << str << '\n';
    }
    return 0;
}

std :: istream :: sync

int sync();

作用:同步输入缓冲区

 

a.cpp: In function ‘int main()’: a.cpp:47:17: error: ‘Swap’ was not declared in this scope 47 | Swap(&a, &b); | ^~~~ a.cpp:53:17: error: ‘Swap’ was not declared in this scope 53 | Swap(&a, &b); | ^~~~ a.cpp:59:17: error: ‘Swap’ was not declared in this scope 59 | Swap(&a, &b); | ^~~~ a.cpp:65:17: error: ‘Swap’ was not declared in this scope 65 | Swap(&a, &b); | ^~~~ a.cpp:71:17: error: ‘Swap’ was not declared in this scope 71 | Swap(&a, &b); | ^~~~ a.cpp:78:21: error: no match for ‘operator>>’ (operand types are ‘std::istream’ {aka ‘std::basic_istream<char>’} and ‘char*’) 78 | cin >> a >> b; | ~~~ ^~ ~ | | | | | char* | std::istream {aka std::basic_istream<char>} In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:168:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 168 | operator>>(bool& __n) | ^~~~~~~~ /usr/include/c++/11/istream:168:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: cannot bind non-const lvalue reference of type ‘bool&’ to a value of type ‘char*’ 78 | cin >> a >> b; | ^ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:172:7: note: candidate:std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]’ (near match) 172 | operator>>(short& __n); | ^~~~~~~~ /usr/include/c++/11/istream:172:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: invalid conversion from ‘char*’ to ‘short int’ [-fpermissive] 78 | cin >> a >> b; | ^ | | | char* a.cpp:78:24: error: cannot bind rvalue ‘(short int)a’ to ‘short int&’ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:175:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 175 | operator>>(unsigned short& __n) | ^~~~~~~~ /usr/include/c++/11/istream:175:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: invalid conversion from ‘char*’ to ‘short unsigned int’ [-fpermissive] 78 | cin >> a >> b; | ^ | | | char* a.cpp:78:24: error: cannot bind rvalue ‘(short unsigned int)a’ to ‘short unsigned int&’ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:179:7: note: candidate:std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]’ (near match) 179 | operator>>(int& __n); | ^~~~~~~~ /usr/include/c++/11/istream:179:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: invalid conversion from ‘char*’ to ‘int’ [-fpermissive] 78 | cin >> a >> b; | ^ | | | char* a.cpp:78:24: error: cannot bind rvalue ‘(int)a’ to ‘int&’ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:182:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 182 | operator>>(unsigned int& __n) | ^~~~~~~~ /usr/include/c++/11/istream:182:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: invalid conversion from ‘char*’ to ‘unsigned int’ [-fpermissive] 78 | cin >> a >> b; | ^ | | | char* a.cpp:78:24: error: cannot bind rvalue ‘(unsigned int)a’ to ‘unsigned int&’ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:186:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 186 | operator>>(long& __n) | ^~~~~~~~ /usr/include/c++/11/istream:186:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: invalid conversion from ‘char*’ to ‘long int’ [-fpermissive] 78 | cin >> a >> b; | ^ | | | char* a.cpp:78:24: error: cannot bind rvalue ‘(long int)a’ to ‘long int&’ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:190:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 190 | operator>>(unsigned long& __n) | ^~~~~~~~ /usr/include/c++/11/istream:190:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: invalid conversion from ‘char*’ to ‘long unsigned int’ [-fpermissive] 78 | cin >> a >> b; | ^ | | | char* a.cpp:78:24: error: cannot bind rvalue ‘(long unsigned int)a’ to ‘long unsigned int&’ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:195:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 195 | operator>>(long long& __n) | ^~~~~~~~ /usr/include/c++/11/istream:195:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: invalid conversion from ‘char*’ to ‘long long int’ [-fpermissive] 78 | cin >> a >> b; | ^ | | | char* a.cpp:78:24: error: cannot bind rvalue ‘(long long int)a’ to ‘long long int&’ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:199:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 199 | operator>>(unsigned long long& __n) | ^~~~~~~~ /usr/include/c++/11/istream:199:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: invalid conversion from ‘char*’ to ‘long long unsigned int’ [-fpermissive] 78 | cin >> a >> b; | ^ | | | char* a.cpp:78:24: error: cannot bind rvalue ‘(long long unsigned int)a’ to ‘long long unsigned int&’ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:235:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 235 | operator>>(void*& __p) | ^~~~~~~~ /usr/include/c++/11/istream:235:7: note: conversion of argument 1 would be ill-formed: a.cpp:78:24: error: cannot bind non-const lvalue reference of type ‘void*&’ to an rvalue of type ‘void*’ 78 | cin >> a >> b; | ^ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:120:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ 120 | operator>>(__istream_type& (*__pf)(__istream_type&)) | ^~~~~~~~ /usr/include/c++/11/istream:120:36: note: no known conversion for argument 1 from ‘char*’ to ‘std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)’ {aka ‘std::basic_istream<char>& (*)(std::basic_istream<char>&)’} 120 | operator>>(__istream_type& (*__pf)(__istream_type&)) | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/istream:124:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]’ 124 | operator>>(__ios_type& (*__pf)(__ios_type&)) | ^~~~~~~~ /usr/include/c++/11/istream:124:32: note: no known conversion for argument 1 from ‘char*’ to ‘std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&)’ {aka ‘std::basic_ios<char>& (*)(std::basic_ios<char>&)’} 124 | operator>>(__ios_type& (*__pf)(__ios_type&)) | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ /usr/include/c++/11/istream:131:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ 131 | operator>>(ios_base& (*__pf)(ios_base&)) | ^~~~~~~~ /usr/include/c++/11/istream:131:30: note: no known conversion for argument 1 from ‘char*’ to ‘std::ios_base& (*)(std::ios_base&)’ 131 | operator>>(ios_base& (*__pf)(ios_base&)) | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~ /usr/include/c++/11/istream:214:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ 214 | operator>>(float& __f) | ^~~~~~~~ /usr/include/c++/11/istream:214:25: note: no known conversion for argument 1 from ‘char*’ to ‘float&’ 214 | operator>>(float& __f) | ~~~~~~~^~~ /usr/include/c++/11/istream:218:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ 218 | operator>>(double& __f) | ^~~~~~~~ /usr/include/c++/11/istream:218:26: note: no known conversion for argument 1 from ‘char*’ to ‘double&’ 218 | operator>>(double& __f) | ~~~~~~~~^~~ /usr/include/c++/11/istream:222:7: note: candidate:std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ 222 | operator>>(long double& __f) | ^~~~~~~~ /usr/include/c++/11/istream:222:31: note: no known conversion for argument 1 from ‘char*’ to ‘long double&’ 222 | operator>>(long double& __f) | ~~~~~~~~~~~~~^~~ /usr/include/c++/11/istream:259:7: note: candidate:std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]’ 259 | operator>>(__streambuf_type* __sb); | ^~~~~~~~ /usr/include/c++/11/istream:259:36: note: no known conversion for argument 1 from ‘char*’ to ‘std::basic_istream<char>::__streambuf_type*’ {aka ‘std::basic_streambuf<char>*’} 259 | operator>>(__streambuf_type* __sb); | ~~~~~~~~~~~~~~~~~~^~~~ In file included from /usr/include/c++/11/string:56, from /usr/include/c++/11/bits/locale_classes.h:40, from /usr/include/c++/11/bits/ios_base.h:41, from /usr/include/c++/11/ios:42, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/basic_string.tcc:1485:5: note: candidate: ‘template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)’ 1485 | operator>>(basic_istream<_CharT, _Traits>& __in, | ^~~~~~~~ /usr/include/c++/11/bits/basic_string.tcc:1485:5: note: template argument deduction/substitution failed: a.cpp:78:24: note: mismatched types ‘std::__cxx11::basic_string<_CharT, _Traits, _Allocator>’ and ‘char*’ 78 | cin >> a >> b; | ^ In file included from /usr/include/c++/11/istream:1016, from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/bits/istream.tcc:958:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)’ 958 | operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) | ^~~~~~~~ /usr/include/c++/11/bits/istream.tcc:958:5: note: template argument deduction/substitution failed: a.cpp:78:24: note: deduced conflicting types for parameter ‘_CharT’ (‘char’ and ‘char*’) 78 | cin >> a >> b; | ^ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:756:5: note: candidate: ‘template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)’ 756 | operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c) | ^~~~~~~~ /usr/include/c++/11/istream:756:5: note: template argument deduction/substitution failed: a.cpp:78:24: note: cannot convert ‘a’ (type ‘char*’) to type ‘unsigned char&’ 78 | cin >> a >> b; | ^ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:761:5: note: candidate: ‘template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&)’ 761 | operator>>(basic_istream<char, _Traits>& __in, signed char& __c) | ^~~~~~~~ /usr/include/c++/11/istream:761:5: note: template argument deduction/substitution failed: a.cpp:78:24: note: cannot convert ‘a’ (type ‘char*’) to type ‘signed char&’ 78 | cin >> a >> b; | ^ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:859:5: note: candidate: ‘template<class _CharT, class _Traits, long unsigned int _Num> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT (&)[_Num])’ 859 | operator>>(basic_istream<_CharT, _Traits>& __in, _CharT (&__s)[_Num]) | ^~~~~~~~ /usr/include/c++/11/istream:859:5: note: template argument deduction/substitution failed: a.cpp:78:24: note: mismatched types ‘_CharT [_Num]’ and ‘char*’ 78 | cin >> a >> b; | ^ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:868:5: note: candidate: ‘template<class _Traits, long unsigned int _Num> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char (&)[_Num])’ 868 | operator>>(basic_istream<char, _Traits>& __in, unsigned char (&__s)[_Num]) | ^~~~~~~~ /usr/include/c++/11/istream:868:5: note: template argument deduction/substitution failed: a.cpp:78:24: note: mismatched types ‘unsigned char [_Num]’ and ‘char*’ 78 | cin >> a >> b; | ^ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:873:5: note: candidate: ‘template<class _Traits, long unsigned int _Num> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char (&)[_Num])’ 873 | operator>>(basic_istream<char, _Traits>& __in, signed char (&__s)[_Num]) | ^~~~~~~~ /usr/include/c++/11/istream:873:5: note: template argument deduction/substitution failed: a.cpp:78:24: note: mismatched types ‘signed char [_Num]’ and ‘char*’ 78 | cin >> a >> b; | ^ In file included from /usr/include/c++/11/iostream:40, from a.cpp:1: /usr/include/c++/11/istream:1006:5: note: candidate: ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&)’ 1006 | operator>>(_Istream&& __is, _Tp&& __x) | ^~~~~~~~ /usr/include/c++/11/istream:1006:5: note: template argument deduction/substitution failed: /usr/include/c++/11/istream: In substitution of ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_istream<char>&; _Tp = char*&]’: a.cpp:78:10: required from here /usr/include/c++/11/istream:1006:5: error: template constraint failure for ‘template<class _Is, class _Tp> requires (__derived_from_ios_base<_Is>) && requires(_Is& __is, _Tp&& __t) {__is >> (forward<_Tp>)(__t);} using __rvalue_stream_extraction_t = _Is&&’ /usr/include/c++/11/istream:1006:5: note: constraints not satisfied In file included from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/ostream: In substitution of ‘template<class _Is, class _Tp> requires (__derived_from_ios_base<_Is>) && requires(_Is& __is, _Tp&& __t) {__is >> (forward<_Tp>)(__t);} using __rvalue_stream_extraction_t = _Is&& [with _Is = std::basic_istream<char>&; _Tp = char*&]’: /usr/include/c++/11/istream:1006:5: required by substitution of ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_istream<char>&; _Tp = char*&]’ a.cpp:78:10: required from here /usr/include/c++/11/ostream:717:13: required for the satisfaction of ‘__derived_from_ios_base<_Is>’ [with _Is = std::basic_istream<char, std::char_traits<char> >&] /usr/include/c++/11/ostream:717:39: note: the expression ‘is_class_v<_Tp> [with _Tp = std::basic_istream<char, std::char_traits<char> >&]’ evaluated to ‘false’ 717 | concept __derived_from_ios_base = is_class_v<_Tp> | ^~~~~~~~~~~~~~~ a.cpp:79:17: error: ‘Swap’ was not declared in this scope 79 | Swap(a, b); | ^~~~ a.cpp:42:19: warning: unused variable ‘n’ [-Wunused-variable] 42 | int type, n, i; | ^ a.cpp:42:22: warning: unused variable ‘i’ [-Wunused-variable] 42 | int type, n, i; | ^ 上一个问题的代码出现了上述报错,请修改
05-29
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值