注册 登录
编程论坛 C++教室

string问题

幽灵嫖客 发布于 2008-04-13 18:13, 1505 次点击
程序源码:
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    string strinfo="please input a string:\n";
    cout<<strinfo;
    cin>>strinfo;
    cout<<strinfo;
    return 0;
}

运行时报错了:
d:\vc++ 6.0\msdev98\myprojects\ycp\a.cpp(8) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptabl
e conversion)
不知道为什么?
13 回复
#2
flylee2008-04-13 18:29
编译器没设置对
至于怎么设置我也不知道,我不用VC的
#3
幽灵嫖客2008-04-13 18:33
可能是编译器装的时候就有问题,不可能没有重载string的》和《
#4
hitxinyu2008-04-13 18:49
不是#include <cstring>是#include <string>
#5
sunkaidong2008-04-13 18:54
#include <iostream>
#include <string>
using  namespace std;
int main()
{
    string s="please input a string:\n";
    cout<<s;
    fflush(stdin);
    cin>>s;
    cout<<s;
    return 0;
}
#6
幽灵嫖客2008-04-13 18:56
不是说C++的头文件在C前加个'c'吗?
能解释一下吗?
#7
hitxinyu2008-04-13 23:12
#include <cstring>
是微软的
string是std C++标准库
string 在 #include <string>里。
#8
随心2008-04-14 13:17
cstring和string.h其实里面都是C标准库提供的东西,甚至某些实现中cstring的内容就是   
  namespace   std   
  {   
  #include   <string.h>   
  }   
   
  但是cstring是C++的组成部分,而不是C的组成部分   
  string.h是C的组成部分,而不是C++的组成部分   
   
  所以如果你用的是C++,那么请用cstring,如果你用的是C请用string.h   
  至于string,那么个是C++定义的std::string所使用的文件,和这两个文件没有任何关系,也不存在新旧的问题
#9
幽灵嫖客2008-04-14 16:53
但我用的是Visual C++ 6.0 如果包含cstring头文件
用cin读入一个string或用cout输出一个stirng时
就会报错误。
#10
hitxinyu2008-04-14 21:54
[bo]以下是引用 [un]随心[/un] 在 2008-4-14 13:17 的发言:[/bo]

cstring和string.h其实里面都是C标准库提供的东西,甚至某些实现中cstring的内容就是   
  namespace   std   
  {   
  #include      
  }   
   
  但是cstring是C++的组成部分,而不是C的组成部分   
  string.h是C ...

受教了。没仔细看。以为是CString
http://www.
说的更详细些。
/******************************/
C、传统 C++
#include <assert.h> //设定插入点
#include <ctype.h> //字符处理
#include <errno.h> //定义错误码
#include <float.h> //浮点数处理
#include <fstream.h> //文件输入/输出
#include <iomanip.h> //参数化输入/输出
#include <iostream.h> //数据流输入/输出
#include <limits.h> //定义各种数据类型最值常量
#include <locale.h> //定义本地化函数
#include <math.h> //定义数学函数
#include <stdio.h> //定义输入/输出函数
#include <stdlib.h> //定义杂项函数及内存分配函数
#include <string.h> //字符串处理
#include <strstrea.h> //基于数组的输入/输出
#include <time.h> //定义关于时间的函数
#include <wchar.h> //宽字符处理及输入/输出
#include <wctype.h> //宽字符分类

/******************************/

标准 C++ (同上的不再注释)
#include <algorithm> //STL 通用算法
#include <bitset> //STL 位集容器
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex> //复数类
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque> //STL 双端队列容器
#include <exception> //异常处理类
#include <fstream>
#include <functional> //STL 定义运算函数(代替运算符)
#include <limits>
#include <list> //STL 线性列表容器
#include <map> //STL 映射容器
#include <iomanip>
#include <ios> //基本输入/输出支持
#include <iosfwd> //输入/输出系统使用的前置声明
#include <iostream>
#include <istream> //基本输入流
#include <ostream> //基本输出流
#include <queue> //STL 队列容器
#include <set> //STL 集合容器
#include <sstream> //基于字符串的流
#include <stack> //STL 堆栈容器
#include <stdexcept> //标准异常类
#include <streambuf> //底层输入/输出支持
#include <string> //字符串类
#include <utility> //STL 通用模板类
#include <vector> //STL 动态数组容器
#include <cwchar>
#include <cwctype>
using namespace std;

/******************************/
C99 增加

#include <complex.h> //复数处理
#include <fenv.h> //浮点环境
#include <inttypes.h> //整数格式转换
#include <stdbool.h> //布尔环境
#include <stdint.h> //整型环境
#include <tgmath.h> //通用类型数学宏
/******************************/

[[it] 本帖最后由 hitxinyu 于 2008-4-14 21:58 编辑 [/it]]
#11
wuxueyan20082008-04-14 23:09
楼主就是一个头文件写错了,其他的都没错。
其实,楼主用错了编译器,不应该用VC6.0,其他的编译器都支持string,
除了VC6.0,楼主可以用VC2005试试
#include <iostream>
#include <string>
using namespace std;

int main()
{
    

    string strinfo="please input a string:\n";
    cout<<strinfo;
    cin>>strinfo;
    cout<<strinfo;
    return 0;

}
#12
张信哲2008-04-15 14:27
我还觉得6.0的好。虽然老师说2005的不错,习惯了
#13
张信哲2008-04-15 14:32
我还觉得6.0的好。虽然老师说2005的不错,习惯了
#14
sunkaidong2008-04-15 15:40
cstring 和string都有库的。。。可以看看msdn
1