求,为什么cin报错
查看原帖
求,为什么cin报错
726906
Windy1206楼主2025/6/21 09:35

为什么

cin>>(a+1)>>(b+1);

要报错而

scanf("%s%s",(a+1),(b+1));

不会...

#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
char a[N],b[N];
int s[N],top;
int kmpb[N],kmpab[N];
int main()
{
	cin>>(a+1)>>(b+1);
	int lena=strlen(a+1);
	int lenb=strlen(b+1);
	int tmp=0;
	for(int i=2;i<=lenb;i++)
	{
		while(tmp&&b[i]!=b[tmp+1])
		{
			tmp=kmpb[tmp];
		}
		if(b[i]==b[tmp+1])
		{
			tmp++;
		}
		kmpb[i]=tmp;
	}
	tmp=0;
	for(int i=1;i<=lena;i++)
	{
		while(tmp&&a[i]!=b[tmp+1])
		{
			tmp=kmpb[tmp];
		}
		if(a[i]==b[tmp+1])
		{
			tmp++;
		}
		kmpab[i]=tmp;
		s[++top]=i;
		if(tmp==lenb)
		{
			top-=lenb;
			tmp=kmpab[s[top]];
		}
	}
	for(int i=1;i<=top;i++)
	{
		cout<<a[s[i]];
	}
	return 0;
}

报错信息:

/tmp/compiler_kisz2qhp/src: In function ‘int main()’:
/tmp/compiler_kisz2qhp/src:9:12: 错误:no match for ‘operator>>’ (operand types are ‘std::istream’ {aka ‘std::basic_istream<char>’} and ‘char*’)
    9 |         cin>>(a+1)>>(b+1);
      |         ~~~^~~~~~~
      |         |      |
      |         |      char*
      |         std::istream {aka std::basic_istream<char>}
In file included from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/sstream:40,
                 from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/complex:45,
                 from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/ccomplex:39,
                 from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/x86_64-unknown-linux-gnu/bits/stdc++.h:127,
                 from /tmp/compiler_kisz2qhp/src:1:
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:325:7: 附注:candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]’ (near match)
  325 |       operator>>(void*& __p)
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:325:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 错误:cannot bind non-const lvalue reference of type ‘void*&’ to an rvalue of type ‘void*’
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:201:7: 附注: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>; __istream_type = std::basic_istream<char>]’ (near match)
  201 |       operator>>(unsigned long long& __n)
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:201:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 错误:invalid conversion from ‘char*’ to ‘long long unsigned int’ [-fpermissive]
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
      |                |
      |                char*
/tmp/compiler_kisz2qhp/src:9:16: 错误:无法将右值‘(long long unsigned int)(((char*)(& a)) + 1)’绑定到‘long long unsigned int&’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:197:7: 附注: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>; __istream_type = std::basic_istream<char>]’ (near match)
  197 |       operator>>(long long& __n)
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:197:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 错误:invalid conversion from ‘char*’ to ‘long long int’ [-fpermissive]
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
      |                |
      |                char*
/tmp/compiler_kisz2qhp/src:9:16: 错误:无法将右值‘(long long int)(((char*)(& a)) + 1)’绑定到‘long long int&’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:192:7: 附注: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>; __istream_type = std::basic_istream<char>]’ (near match)
  192 |       operator>>(unsigned long& __n)
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:192:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 错误:invalid conversion from ‘char*’ to ‘long unsigned int’ [-fpermissive]
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
      |                |
      |                char*
/tmp/compiler_kisz2qhp/src:9:16: 错误:无法将右值‘(long unsigned int)(((char*)(& a)) + 1)’绑定到‘long unsigned int&’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:188:7: 附注:candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]’ (near match)
  188 |       operator>>(long& __n)
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:188:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 错误:invalid conversion from ‘char*’ to ‘long int’ [-fpermissive]
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
      |                |
      |                char*
/tmp/compiler_kisz2qhp/src:9:16: 错误:无法将右值‘(long int)(((char*)(& a)) + 1)’绑定到‘long int&’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:184:7: 附注:candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]’ (near match)
  184 |       operator>>(unsigned int& __n)
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:184:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 错误:invalid conversion from ‘char*’ to ‘unsigned int’ [-fpermissive]
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
      |                |
      |                char*
/tmp/compiler_kisz2qhp/src:9:16: 错误:无法将右值‘(unsigned int)(((char*)(& a)) + 1)’绑定到‘unsigned int&’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:181:7: 附注:candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]’ (near match)
  181 |       operator>>(int& __n);
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:181:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 错误:invalid conversion from ‘char*’ to ‘int’ [-fpermissive]
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
      |                |
      |                char*
/tmp/compiler_kisz2qhp/src:9:16: 错误:无法将右值‘(int)(((char*)(& a)) + 1)’绑定到‘int&’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:177:7: 附注: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>; __istream_type = std::basic_istream<char>]’ (near match)
  177 |       operator>>(unsigned short& __n)
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:177:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 错误:invalid conversion from ‘char*’ to ‘short unsigned int’ [-fpermissive]
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
      |                |
      |                char*
/tmp/compiler_kisz2qhp/src:9:16: 错误:无法将右值‘(short unsigned int)(((char*)(& a)) + 1)’绑定到‘short unsigned int&’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:174:7: 附注:candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]’ (near match)
  174 |       operator>>(short& __n);
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:174:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 错误:invalid conversion from ‘char*’ to ‘short int’ [-fpermissive]
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
      |                |
      |                char*
/tmp/compiler_kisz2qhp/src:9:16: 错误:无法将右值‘(short int)(((char*)(& a)) + 1)’绑定到‘short int&’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:170:7: 附注:candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]’ (near match)
  170 |       operator>>(bool& __n)
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:170:7: 附注:  conversion of argument 1 would be ill-formed:
/tmp/compiler_kisz2qhp/src:9:16: 警告:comparing the result of pointer addition ‘(((char*)(& a)) + 1)’ and NULL [-Waddress]
    9 |         cin>>(a+1)>>(b+1);
      |              ~~^~~
/tmp/compiler_kisz2qhp/src:9:16: 错误:cannot bind non-const lvalue reference of type ‘bool&’ to a value of type ‘char*’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:224:7: 附注:candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]’
  224 |       operator>>(long double& __f)
      |       ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:224:31: 附注:  no known conversion for argument 1 from ‘char*’ to ‘long double&’
  224 |       operator>>(long double& __f)
      |                  ~~~~~~~~~~~~~^~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/istream:220:7: 附注:candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]’
  220 | 
...
2025/6/21 09:35
加载中...