MyException - 我的异常网
当前位置:我的异常网» C++ » 一个关于C++的string头文件的有关问题

一个关于C++的string头文件的有关问题

www.MyException.Cn  网友分享于:2013-04-29  浏览:11次
一个关于C++的string头文件的问题?
我的string头文件为什么不能用啊?举个例子如下!
请大虾们帮忙下。是不是我的下的C++编译器有问题啊!还是需要更新什么?
环境:windows xp ,sp3,visual C++6.0  

#include "stdafx.h"
#include <iostream.h>
#include <string>
 main()
{
  string word; //说这边的 string没有定义!
  while(cin>>word)
cout<<word<<endl;
  system("pause");
}

D:\C++安装\MSDev98\MyProjects\34\34.cpp(9) : error C2065: 'string' : undeclared identifier
D:\C++安装\MSDev98\MyProjects\34\34.cpp(9) : error C2146: syntax error : missing ';' before identifier 'word'
D:\C++安装\MSDev98\MyProjects\34\34.cpp(9) : error C2065: 'word' : undeclared identifier
D:\C++安装\MSDev98\MyProjects\34\34.cpp(13) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Error executing cl.exe.

34.exe - 3 error(s), 1 warning(s)

------解决方案--------------------
在main函数前面加上
using namespace std;
------解决方案--------------------
#include <iostream> 
#include <string> 
using namespace std;

void main() 

string word;
while(cin>>word) 
cout<<word<<endl; 
system("pause"); 
}
这样写可以的!
------解决方案--------------------
c++中 string与string.h 的作用和区别 
#include <string.h>

void main()
{
string aaa= "abcsd d";
printf("looking for abc from abcdecd %s\n", (strcmp(aaa,"abc")) ? "Found" : "Not Found");
}
不能正确执行,提示说是string类型没有定义
而下面:
#include <string>

using namespace std;
void main()
{
string aaa= "abcsd d";
printf("looking for abc from abcdecd %s\n", (strcmp(aaa,"abc")) ? "Found" : "Not Found");
}
这里的string编译器就认识了,但是strcmp就不认识了呢?
一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。

但唯独string特别。
问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数,比如楼主提到的strcmp。
这个头文件跟C++的string类半点关系也没有,所以 <string>并非 <string.h>的“升级版本”,他们是毫无关系的两个头文件。
要达到楼主的目的,比如同时:
#include <string.h>
#include <string>
using namespace std;
或者
#include <cstring>
#include <string>

其中 <cstring>是与C标准库的 <string.h>相对应,但裹有std名字空间的版本。 C++标准库很大。非常大。难以置信的大。怎么个大法?这么说吧:在C++ 标准中,关于标准库的规格说明占了密密麻麻300 多页,这还不包括标准C 库,后者只是"作为参考"(老实说,原文就是用的这个词)包含在C++库中。 
当然,并非总是越大越好,但在现在的情况下,确实越大越好,因为大的库会包含大量的功能。标准库中的功能越多,开发自己的应用程序时能借助的功能就越多。C++库并非提供了一切(很明显的是,没有提供并发和图形用户接口的支持),但确实提供了很多。几乎任何事你都可以求助于它。 
在归纳标准库中有些什么之前,需要介绍一下它是如何组织的。因为标准库中东西如此之多,你(或象你一样的其他什么人)所选择的类名或函数名就很有可能和标准库中的某个名字相同。为了避免这种情况所造成的名字冲突,实际上标准库中的一切都被放在名字空间std 中(参见条款28)。但这带来了一个新问题。无数现有的C++代码都依赖于使用了多年的伪标准库中的功能,例如,声明在 <iostream.h>, <complex.h>, <limits.h>等头文件中的功能。现有软件没有针对使用名字空间而进行设计,如果用std 来包装标准库导致现有代码不能用,将是一种可耻行为。(这种釜底抽薪的做法会让现有代码的程序员 
说出比"可耻" 更难听的话)慑于被激怒的程序员会产生的破坏力,标准委员会决定为包装了std 的那部分标准库构件创建新的头文件名。生成新头文件的方法仅仅是将现有C++头文件名中的.h 去掉,方法本身不重要,正如最后产生的结果不一致也并不重要一样。所以<iostream.h>变成了 <iostream>, <complex.h>变成了 <complex>等等。对于C 头文件,采用同样的方法,但在每个名字前还要添加一个c。所以C 的 <string.h>变成了<cstring>, <stdio.h>变成了 <cstdio>,等等。最后一点是,旧的C++头文件是官方所反对使用的(即,明确列出不再支持),但旧的C 头文件则没有(以保持对C 的兼容性)。实际上,编译器制造商不会停止对客户现有软件提供支持,所以可以预计,旧的C++头文件在未来几年内还是会被支持。 
所以,实际来说,下面是C++头文件的现状: 
旧的C++头文件名如 <iostream.h>将会继续被支持,尽管它们不在官方标 准中。这些头文件的内容不在名字空间std 中。 
新的C++头文件如 <iostream>包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std 中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。) 

文章评论

Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
漫画:程序员的工作
漫画:程序员的工作
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
 程序员的样子
程序员的样子
老程序员的下场
老程序员的下场
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
一个程序员的时间管理
一个程序员的时间管理
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
中美印日四国程序员比较
中美印日四国程序员比较
我是如何打败拖延症的
我是如何打败拖延症的
如何成为一名黑客
如何成为一名黑客
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
那些争议最大的编程观点
那些争议最大的编程观点
程序员应该关注的一些事儿
程序员应该关注的一些事儿
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员和编码员之间的区别
程序员和编码员之间的区别
为什么程序员都是夜猫子
为什么程序员都是夜猫子
旅行,写作,编程
旅行,写作,编程
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
每天工作4小时的程序员
每天工作4小时的程序员
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
10个调试和排错的小建议
10个调试和排错的小建议
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员都该阅读的书
程序员都该阅读的书
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的鄙视链
程序员的鄙视链
Java程序员必看电影
Java程序员必看电影
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
我的丈夫是个程序员
我的丈夫是个程序员
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
编程语言是女人
编程语言是女人
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有