读书人

c的输入有关问题

发布时间: 2013-10-07 19:41:22 作者: rapoo

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

读书人网 >C++

热点推荐