在UNIX系统下使用IO库程序

发表于:2016-4-13 10:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:tangyizhi    来源:51Testing软件测试网采编

分享:
  在上一篇文章中,我们已经可以在UNIX下编译一个hello world 程序了。今天介绍UNIX系统下,如何在程序中使用IO库。
  主体流程分为以下三步:(代码参考的是:<<C++ Primer>>)
  第一步:新建文件,并命名为“Progr1.cpp”
  第二步:在Progr1.cpp中写好main函数,并使用cin ,cout 这两个IO库函数。代码如下
#include <iostream>//告诉编译器要使用 iostream 库。尖括号里的名字是一个。头文件。程序使用库工具时必须包含相关的头文件。
int main()
{
std::cout<<"enter two numbers:"<< std::endl;
int v1,v2;
std::cin>>v1>>v2;
std::cout<<"The num of"<<v1 <<"and"<<v2<< "is" <<v1 + v2<<std::endl;
return 0;
}
  上途代码中有两点值得注意(cin 和cout 的用法及效果比较简单,这里就不在这里缀叙了)。第一点:#include <iostream> 。其作用已经在注释中说明
  另外一点值得注意的是:程序中使用
  std::cout 和 std::endl,而不 是 cout 和 endl。前缀 std:: 表明 cout 和 endl 是定义在命名空间 std 中 的。使用命名空间程序员可以避免与库中定义的名字相同而引起无意冲突。
  第三步:使用命令编译。
  这里碰到了一点跟书上不太一样的问题:
  一开始,我输入命令:
  llbt$ cc Progr1.cpp
  报错如下:
  Undefined symbols for architecture x86_64:
  "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
  std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in Progr1-74ce42.o
  std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in Progr1-74ce42.o....
  如何解决这种情况?明明是按着教科书一步一步来的,却又报错了。这么难学,还是放弃吧。。。这是初学者容易抱有的心态,其实这种问题,在工作中是经常碰到的。
  解决问题的思路很简单,你要相信你不是第一个碰到类似问题的人。所以,我们只需要百度/google即可。
  大致分析一下出错的原因可能是:编译器不识别这个IO 库.
  于是我们可以搜“unix 下使用 iostream”
  很快我们就找到了可以解决问题的答案:我们需要通过命令行 告诉编译器,程序需要使用库stdc++。命令如下:
  llbt$ cc -lstdc++ Progr1.cpp
  出现这个问题的原因是:标准 iostream 类只能用于标准模式下,且iostream包含在 C++ 标准库 libCstd 中.
  好了, IO库的使用介绍完了。
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号