为什么
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 |
...