c的输入有关问题
c的输入问题#includeiostream#includecstringusing namespace stdint main(){string strscanf(%s,
c的输入问题 #include<iostream> #include<cstring> using namespace std; int main() { string str; scanf("%s",&str); return 0; } 这个运行时会抛出异常 为什么? [解决办法] 你用scanf(). 是不是可以这样? scanf("%s",str);[解决办法] //string 类型几乎没有用过!都是用下面这种方式 char str[100] = {0}; scanf("%s",str);[解决办法] 类型不匹配吧,一个是char*,一个是string类,不可以吧[解决办法]
引用: //string 类型几乎没有用过!都是用下面这种方式 char str[100] = {0}; scanf("%s",str); 引用: //string 类型几乎没有用过!都是用下面这种方式 char str[100] = {0}; scanf("%s",str); 应该就是类型不匹配的问题。这种方法是首先分配了数组,然后使用str作为地址了。
[解决办法] string 是cpp里面的类型。
scanf是c的函数,所以不兼容
[解决办法] 引用: Quote: 引用: string 是cpp里面的类型。 scanf是c的函数,所以不兼容 c不是也有string么c里面没有string类型。 cstring只是定义了与char* 相关的操作。
在c++里面,string类型的头文件是
#include <string>
不是#include <cstring>.
[解决办法] Scanf %s的含义:
String, up to first white-space character (space, tab or newline).
就是说到第一个空格为止的字符串
而String这个对象,是一个basic_string对象,里面内存布局是有指针的。
所以这样赋值肯定就有问题了。
建议用VC编辑器查看一下数据结构就清楚了。