定义 string str;
并使用scanf("%s", &str[0])进行读入
scanf("%s", &str[0]);
printf("%s", &str[0]); //正常输出
cout<<str;//输出为空,但是如果使用cin读入str会正常输出
用类似gets()读入也会造成这样的情况
我猜想,这些函数原本只是适用于字符数组,其大小是已经确定了的,读入不会改变数组的大小(废话,确定了怎么改变),但是string的默认大小是0,使用类似胡scanf对数组进行读入的操作并不改变其大小,cout根据大小进行输出(导致什么也没输出),printf根据是否读入‘\0’来终止输出,然后就造成了这样的情况。
解决方案,先确定一下string大小
str.resize(10010);
就ok了,说实话应该上面的操作会造成数组越界。