字符串的简单使用,C++中函数返回字符串

Posted

技术标签:

【中文标题】字符串的简单使用,C++中函数返回字符串【英文标题】:Simple use of strings, returning strings from functions in C++ 【发布时间】:2019-03-18 03:55:14 【问题描述】:

好的。

我已经有一段时间没有写任何 C++ 了。

我生锈了。

那么我在这里做错了什么,为什么?

#include <iostream>

std::string hello() 
  return "another green world";


int main(int argc, char **argv) 
  std::cout << hello() << std::endl;    
  return 0;

然后编译:

gcc test.cpp -o test

给我

/tmp/ccxCCo47.o: In function `hello[abi:cxx11]()':
test.cpp:(.text+0x34): undefined reference to `std::allocator<char>::allocator()'
test.cpp:(.text+0x4b): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)'
test.cpp:(.text+0x57): undefined reference to `std::allocator<char>::~allocator()'
test.cpp:(.text+0x7b): undefined reference to `std::allocator<char>::~allocator()'
/tmp/ccxCCo47.o: In function `main':
test.cpp:(.text+0xcb): undefined reference to `std::cout'
test.cpp:(.text+0xd0): 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::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
test.cpp:(.text+0xda): 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> >&)'
test.cpp:(.text+0xe5): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
test.cpp:(.text+0xf1): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
test.cpp:(.text+0x116): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/tmp/ccxCCo47.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cpp:(.text+0x156): undefined reference to `std::ios_base::Init::Init()'
test.cpp:(.text+0x16b): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccxCCo47.o:(.data.rel.local.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status

【问题讨论】:

你如何编译你的代码? 用它更新问题 使用 g++ 而不是 gcc 来编译 C++ 代码。 g++ test.cpp -o test. 您使用的是哪个编译器?因为它似乎在 ideone.com 中工作 【参考方案1】:

你需要包含你的头文件。

#include <iostream>

另外,请尝试使用 g++ 而不是 gcc 进行编译。

g++ test.cpp

【讨论】:

我实际上正在这样做。我只是忘了把它包括在上面。 尝试用 g++ 编译? g++ test.cpp 有什么区别? 如果使用g++,默认链接libstdc++。通过***.com/questions/3081815/c-errors-while-compiling @interstar gcc 是 C 编译器,使用 g++ 编译 C++。它们不是同一种语言。

以上是关于字符串的简单使用,C++中函数返回字符串的主要内容,如果未能解决你的问题,请参考以下文章

C++ 无法使用 vector<string> 作为返回类型

从 PInvoke 返回一个字符串? [复制]

在 c++ 程序中使用 Java DLL

C++:从函数访问主变量的最简单方法?

Oracle使用简单函数

创建一个简单的 C++ 字符串类