首先,c语言中没有string类型,直接用scanf读入string类型是不正确的。如:
string a;
scanf("%s",a); // 录入"asd"
cout << a; // 输出后a是空
正确方式:
string a;
a.resize(8);
scanf("%s",&a[0]); // 录入"asd"
cout << a; // 输出:asd
为什么cin能直接读取String而scanf()不能?因为scanf是标准输入流,没有缓存区,需要预先分配空间,而cin是输入流,它使用了缓冲区。如果要使用scanf读入字符串,那就一定要事先为它申请足够的内存空间
scanf()读取String和char[]的使用区别:
string a;
a.resize(8);
char b[8];
scanf("%s",&str[0]);
scanf("%s",b);
标签:读取,scanf,char,String,string,cout From: https://www.cnblogs.com/jinziguang/p/17776527.html