有没有办法从c ++中的main函数返回字符串?我提到下面的示例程序
string main(int argv, char* argc[])
{
.
.
return "sucess";
}
答案 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::cout
或std::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++
这是流程传递数据的标准方法之一,许多工具都适合以这种方式使用。