从c ++中的main函数返回字符串

时间:2013-10-07 07:40:54

标签: c++

有没有办法从c ++中的main函数返回字符串?我提到下面的示例程序

string main(int argv, char* argc[])
{
  .
  .
  return "sucess";
}

5 个答案:

答案 0 :(得分:8)

标准说:

  

3.6.1主要功能[basic.start.main]

     

2 /实现不应预定义主函数。此功能不应过载。 它的返回类型为int ,但其类型是实现定义的。所有实现都应允许两者

     
      
  • ()返回int
  • 的函数   
  • 函数(int,指向char的指针)返回int
  •   
     

作为主要类型。 [...]

所以不,你必须返回一个int。

根据您对帖子的评论,您似乎只想在标准输出上输出一个字符串,然后就可以了:

#include <iostream>
int main()
{
    std::cout << "Success" << std::endl;
    // No need for return 0; it is implicit in C++
}

正如Kerrek SB在评论中所说,return 0;隐含在C ++中(标准§3.6.1/ 5 ):

  

[...]如果控件到达main的末尾而没有遇到return语句,则效果是执行

return 0;

答案 1 :(得分:3)

不,这不符合标准。你必须返回一个int才能向调用者显示程序如何退出(好,有错误吗?)。

你为什么要回一个字符串?

答案 2 :(得分:3)

不,你不能,你必须总是返回int。更深入思考,shell程序难以处理字符串:何时释放内存,将返回什么类型的字符串&amp; c。)

但是,您可以使用std::coutstd::cerr写入标准输出标准错误。当您希望控制台应用程序输出类似字符串的数据时,这是正常的做法。

通常,您依靠OS shell将程序的标准输出定向到另一个程序的输入(unix使用管道|)。

答案 3 :(得分:1)

不,你不能在c ++中从main返回字符串,导致main函数的返回值是进程返回码(如果成功则为0,如果进程失败则不为0)。操作系统正在等待从您的应用程序结束的正确信号。

答案 4 :(得分:1)

您可能意味着写入标准输出

#include <cstdio>

int main()
{
    // ...

    std::puts("success");

}   // no "return", success is implicit in C++

这是流程传递数据的标准方法之一,许多工具都适合以这种方式使用。