首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c的输入有关问题

2013-10-07 
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编辑器查看一下数据结构就清楚了。

热点排行