免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3642 | 回复: 11
打印 上一主题 下一主题

为什么我用VC6.0企业版怎么都定义不了字符窜:string? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-09 11:13 |只看该作者 |倒序浏览
好象根本就定义不了似的,我的定义按照书的应该没有错了的,怎么不行啊?

论坛徽章:
0
2 [报告]
发表于 2003-08-09 12:07 |只看该作者

为什么我用VC6.0企业版怎么都定义不了字符窜:string?

  1. #include <iostream>;
  2. #include <string>;

  3. using namespace std;

  4. int main()
  5. {
  6.         string str;
  7.         cout<<"Input the string:";
  8.         cin>;>;str;
  9.         cout<<str<<endl;
  10.         return 0;
  11. }
复制代码


你试试以上代码,不可以吗?我的可以,
是不是你没加using namespace std;

论坛徽章:
0
3 [报告]
发表于 2003-08-09 12:34 |只看该作者

为什么我用VC6.0企业版怎么都定义不了字符窜:string?

原帖由 "sdupoplar" 发表:

你试试以上代码,不可以吗?我的可以,
是不是你没加using namespace std;

为什么一定要加这个啊?好象书的都没有加这句的,
用这个好象“std”有问题

论坛徽章:
0
4 [报告]
发表于 2003-08-09 12:41 |只看该作者

为什么我用VC6.0企业版怎么都定义不了字符窜:string?

using namespace std;
使用标准的名字空间,里面有一些定义、说明。
你把代码贴出来吧。

论坛徽章:
0
5 [报告]
发表于 2003-08-09 13:37 |只看该作者

为什么我用VC6.0企业版怎么都定义不了字符窜:string?

原帖由 "sdupoplar" 发表:
using namespace std;
使用标准的名字空间,里面有一些定义、说明。
你把代码贴出来吧。
   

为什么头文件为什么一定要<string>;而不可以是<string.h>;?
多了个h有什么分别?我有点不明白。

而为什么一定要用标准的名字空间?

论坛徽章:
0
6 [报告]
发表于 2003-08-09 15:30 |只看该作者

为什么我用VC6.0企业版怎么都定义不了字符窜:string?

string 类要用<string>;而<string.h>;是char*的字符串的处理头文件?
C++为了消除不同编译环境头文件的差异,采用不带.h的头文件,同时加上
using namespace std;,如:
<iostream>;,<fstream>;,<sstream>;等。

论坛徽章:
0
7 [报告]
发表于 2003-08-09 15:55 |只看该作者

为什么我用VC6.0企业版怎么都定义不了字符窜:string?

原帖由 "sdupoplar" 发表:
string 类要用<string>;而<string.h>;是char*的字符串的处理头文件?
C++为了消除不同编译环境头文件的差异,采用不带.h的头文件,同时加上
using namespace std;,如:
<iostream>;,<fstream&..........
   
但是iostream不用using namespace std啊   
而且iostream用不用.h都是一样,默认的吗?

论坛徽章:
0
8 [报告]
发表于 2003-08-09 16:01 |只看该作者

为什么我用VC6.0企业版怎么都定义不了字符窜:string?

原帖由 "loveguohuasai" 发表:
   
但是iostream不用using namespace std啊   
而且iostream用不用.h都是一样,默认的吗?

最好用iostream加上 using namespace std,
这样在别的编译环境也可以,用iostream.h在VC中可以,别的地方不一定可以了,VC中iostream和iostream.h都一样。

论坛徽章:
0
9 [报告]
发表于 2003-08-09 16:44 |只看该作者

为什么我用VC6.0企业版怎么都定义不了字符窜:string?

原帖由 "sdupoplar" 发表:

最好用iostream加上 using namespace std,
这样在别的编译环境也可以,用iostream.h在VC中可以,别的地方不一定可以了,VC中iostream和iostream.h都一样。
   
我知道vc是用iostream.h的.我定义了一个字符窜,在主函数内最后想输出字符窜,但是不行,出现这样的错误: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 acceptable conversion),为什么会这样?如下:
#include<iostream.h>;
#include<string>;
using namespace std;
void  main()
{

        string s1="daffaaf";//s1("daffaaf"也是一样不行
        string s2="bsbdbd";
       
               


                        cout<<s1<<endl;
               
                        cout<<s2<<endl;
                       
}

书本都是这样这样cout<<s1这样直接输出的啊,为什么不可以?


还有,是不是多少个头文件只一个using就可以了?

论坛徽章:
0
10 [报告]
发表于 2003-08-09 17:02 |只看该作者

为什么我用VC6.0企业版怎么都定义不了字符窜:string?

两种解决办法:
1:#include<iostream.h>; 改为#include<iostream>;
2:cout<<s1<<endl;
cout<<s2<<endl;
改为:
cout<<s1.c_str ()<<endl;
cout<<s2.c_str ()<<endl;

原来<iostream.h>;和<iostream>;在VC中不完全一样,我一直以为一样。
对于标准的名字空间只声明一次就够了。
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 acceptable conversion),
指:basic_string找不到重载操作符 '<<'的地方。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP