关于c++中使用string字符串变量碰到的问题

软件和网站开发以及相关技术探讨
回复
头像
yang_hui1986527
帖子: 911
注册时间: 2006-03-04 23:10
来自: 江西高安
联系:

关于c++中使用string字符串变量碰到的问题

#1

帖子 yang_hui1986527 » 2009-07-09 10:42

例5.11 输入3个字符串,要求将字符按照由小到大的顺序输出。

代码: 全选

//按照从小到大的顺序排列三个字符串

#include <iostream>
#include <string>
using namespace std;

int main()
{string string1,string2,string3,temp;
cout<<"please input three strings:";
cin>>string1>>string2>>string3;
if(string1>string2) temp=string1,string1=string2,string2=temp;
if(string2>string3) temp=string2,string2=string3,string3=temp;
if(string1>string2) temp=string1,string1=string2,string2=temp;
cout<<string1<<" "<<string2<<" "<<string3<<""<<endl;
return 0;
}
提示错误:

代码: 全选

/tmp/cc2xtCcV.o: In function `__static_initialization_and_destruction_0(int, int)':
sortstr.cpp:(.text+0x1d): undefined reference to `std::ios_base::Init::Init()'
sortstr.cpp:(.text+0x22): undefined reference to `std::ios_base::Init::~Init()'
/tmp/cc2xtCcV.o: In function `main':
sortstr.cpp:(.text+0x76): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'
sortstr.cpp:(.text+0x81): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'
sortstr.cpp:(.text+0x8c): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'
sortstr.cpp:(.text+0x97): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'
sortstr.cpp:(.text+0xa6): undefined reference to `std::cout'
sortstr.cpp:(.text+0xab): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
sortstr.cpp:(.text+0xb9): undefined reference to `std::cin'
sortstr.cpp:(.text+0xbe): undefined reference to `std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
sortstr.cpp:(.text+0xcf): undefined reference to `std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
sortstr.cpp:(.text+0xe0): undefined reference to `std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
sortstr.cpp:(.text+0x108): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
sortstr.cpp:(.text+0x11a): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
sortstr.cpp:(.text+0x12c): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
sortstr.cpp:(.text+0x154): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
sortstr.cpp:(.text+0x166): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/tmp/cc2xtCcV.o:sortstr.cpp:(.text+0x178): more undefined references to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' follow
/tmp/cc2xtCcV.o: In function `main':
sortstr.cpp:(.text+0x1d2): undefined reference to `std::cout'
sortstr.cpp:(.text+0x1d7): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
sortstr.cpp:(.text+0x1e7): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
sortstr.cpp:(.text+0x1f8): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
sortstr.cpp:(.text+0x208): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
sortstr.cpp:(.text+0x219): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
sortstr.cpp:(.text+0x229): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
sortstr.cpp:(.text+0x231): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
sortstr.cpp:(.text+0x239): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'
sortstr.cpp:(.text+0x24b): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
sortstr.cpp:(.text+0x264): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
sortstr.cpp:(.text+0x277): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
sortstr.cpp:(.text+0x290): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
sortstr.cpp:(.text+0x2a3): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/tmp/cc2xtCcV.o:sortstr.cpp:(.text+0x2bc): more undefined references to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' follow
/tmp/cc2xtCcV.o: In function `bool std::operator><char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
sortstr.cpp:(.text._ZStgtIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_[bool std::operator><char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x14): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'
/tmp/cc2xtCcV.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld 返回 1
微信:sn0wdr1am86
QQ: 3217680847
QQ 群:82695646
网站:https://www.itcoder.tech/
网站:http://www.snowdream.tech/
poet
帖子: 2841
注册时间: 2006-09-11 22:47

Re: 关于c++中使用string字符串变量碰到的问题

#2

帖子 poet » 2009-07-09 10:50

编译参数加 -lstdc++ 试试
头像
yang_hui1986527
帖子: 911
注册时间: 2006-03-04 23:10
来自: 江西高安
联系:

Re: 关于c++中使用string字符串变量碰到的问题

#3

帖子 yang_hui1986527 » 2009-07-09 11:00

编译通过。
我已经在头文件中引用了string文件,能否解释下为什么编译的时候要加上“-lstdc++ ”??
谢谢~

代码: 全选

snowdream@snowdream:~/ubuntu/c$ gcc sortstr.cpp -lstdc++ -o sortstr
snowdream@snowdream:~/ubuntu/c$ ./sortstr 
please input three strings:China Germany U.S.A
China Germany U.S.A
微信:sn0wdr1am86
QQ: 3217680847
QQ 群:82695646
网站:https://www.itcoder.tech/
网站:http://www.snowdream.tech/
teddy-xhs
帖子: 1
注册时间: 2009-07-09 10:57

Re: 关于c++中使用string字符串变量碰到的问题

#4

帖子 teddy-xhs » 2009-07-09 11:00

:em06
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: 关于c++中使用string字符串变量碰到的问题

#5

帖子 HuntXu » 2009-07-09 11:01

标准C++库的链接...
HUNT Unfortunately No Talent...
头像
yang_hui1986527
帖子: 911
注册时间: 2006-03-04 23:10
来自: 江西高安
联系:

Re: 关于c++中使用string字符串变量碰到的问题

#6

帖子 yang_hui1986527 » 2009-07-09 11:02

明白了,我一直都用g++来编译的,这次不小心用了gcc,才出现这个问题(缺少库文件)的。

代码: 全选

snowdream@snowdream:~/ubuntu/c$ g++ sortstr.cpp -o sortstr
snowdream@snowdream:~/ubuntu/c$ ./sortstr
please input three strings:China Germany U.S.A
China Germany U.S.A
微信:sn0wdr1am86
QQ: 3217680847
QQ 群:82695646
网站:https://www.itcoder.tech/
网站:http://www.snowdream.tech/
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: 关于c++中使用string字符串变量碰到的问题

#7

帖子 lerosua » 2009-07-09 11:43

g++直接通过 ... 解决了就好
回复