Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 更改C++;在不更改main()函数的情况下输出 #包括 void main() { 您是否需要通过调用另一个函数或更改文本来更改main。既然程序的主要输出是main(),_C++ - Fatal编程技术网

C++ 更改C++;在不更改main()函数的情况下输出 #包括 void main() { 您是否需要通过调用另一个函数或更改文本来更改main。既然程序的主要输出是main(),

C++ 更改C++;在不更改main()函数的情况下输出 #包括 void main() { 您是否需要通过调用另一个函数或更改文本来更改main。既然程序的主要输出是main(),,c++,C++,您能更精确一点吗 你希望那段代码的输出是“我爱你”而不是“爱” 编辑:我不认为在不更改main()中至少一行代码的情况下不能。您可以从cout更改。您的主函数不应该返回int吗?您可能需要更改方法,或者编写另一个将此方法导入的程序,但这是更改简单字符串的最全面的方法…该代码没有使用std,但无论如何都需要围绕cout和r编写自己的包装器如果有,请删除using std,并在定义包装的地方替换为using mystd。我想您可以编写一个操作符好的,修复您的主函数和iostream.h…这就是方法

您能更精确一点吗

你希望那段代码的输出是“我爱你”而不是“爱”


编辑:我不认为在不更改main()中至少一行代码的情况下不能。您可以从cout更改。您的主函数不应该返回int吗?您可能需要更改方法,或者编写另一个将此方法导入的程序,但这是更改简单字符串的最全面的方法…

该代码没有使用std,但无论如何都需要围绕cout和r编写自己的包装器如果有,请删除using std,并在定义包装的地方替换为using mystd。

我想您可以编写一个操作符好的,修复您的主函数和iostream.h…这就是方法

#include<iostream.h>
void main()
{
    cout<<"Love";
}
#包括
//确保在使用std::cout时构造它
//在main被调用之前-thxx到@chappar
std::ios_base::Init stream_初始值设定项;
结构调用程序{
调用方(){std::cout如下所示:

#include <iostream>

// to make sure std::cout is constructed when we use it
// before main was called - thxx to @chappar
std::ios_base::Init stream_initializer;

struct caller {
    caller() { std::cout << "I "; }
    ~caller() { std::cout << " You"; }
} c;

// ohh well, for the br0ken main function
using std::cout;

int main()
{
    cout<<"Love";
}
#包括
int main(){
std::cout
#包括
类tclass
{
公众:

void操作符不像litb那样优雅,而是一种替代方法:

#include <iostream>
class tclass
{
  public:
    void operator <<(char *s)
    {
          std::cout<<"I"<<s<<"You"<<std::endl;
    }
};

tclass cout;

int main()
{
  cout<<"love";
}
#包括
使用名称空间std;
int foo()
{

Cuth> P>的经验是C++可以通过静态构造函数/析构函数来执行主代码前后的代码,例如LITB .< /P >

的代码不象LITB那样优雅,但它工作

#include <iostream>
using namespace std;

int foo()
{
    cout << "I Love You" << endl;
    return cout.rdbuf(0);
}
int i = foo();

int main()
{
    cout << "Love" << endl;
}
#包括
#包括
#包括
#定义cout printf(“我爱你”\n);std::ostringstream os;os
int main()
{ 

假设这是一个类赋值,我敢打赌,这个想法是你可以重写<代码> IoSurviv.H./Cube >,因为C++不把它当作特殊的(对于某些特殊的定义)。

我们也可以这样做:

#include <iostream> 
#include <cstdio> 
#include <sstream> 

#define cout     printf("I love you\n"); std::ostringstream os; os 

int main() 
{ 
    cout << "love"; 
}
#包括
#包括
使用名称空间std;
国际货币基金组织(国际货币基金组织){


cout我真的很惊讶没有人建议#定义“Love”“I Love you”…)

是的..我需要你说的输出..但唯一的条件是main()中连一行代码都不会更改。呃,你可以在全局命名空间中定义你自己的变量'cout',并让它打印“I Love you”我的意思是#include int main(){std::cout回答不好,一点也不好笑。如果一个2或3位数的声誉持有者发布这个答案,他会得到-10。这对你来说是双重标准!:-@realed.:[需要引用]@比努:但你为什么要这样做?如果你这样做,你就学会了一些关于C++的重要的东西……实际上我不理解……DMCKE你能更具体吗?@彬:嗯,LIBT解释了它。它是关于构造函数和析构函数运行的,以及代码> C>代码>的生命周期。尝试用C,D替换“C”;看看发生了什么……LITB,答案可能不总是在工作。在你的调用对象之前有没有保证CUT会被构建?C++的命令规定CUT,CIN会在所有的用户全局对象之前创建吗?谢谢你,SyDoW:我几天前读到C++ 1x保证了CUT和朋友是C。包含在#include之后构建。因此,我们不再需要流初始值设定项。在此之前,我将保留它,当然:P#include#include#include使用名称空间std;#define cout printf(“我爱你”);ostringstream os;os/*newline*/int main(){cout@rlbond-erm,如果你在做printf(),那不是会崩溃得很厉害吗?;即使这是在做作业时作弊,这实际上是一个问题,你可以从中学习一些东西,正如litb的回答所示。@Hanno:一个好的答案并不一定意味着一个好的问题。@Mehrdad:这个问题不一定是好的(甚至是好的)不过,为了恰当起见。我倾向于重新打开这个。只是,我更愿意先修复它,我不太明白怎么做…@dmckee:同意。但我认为根本不应该把litb令人敬畏的回答归功于这个问题。投票重新打开,这显然是一个真正的问题。rdbuf(0)做什么?你的程序打印“爱”吗在打印“我爱你”之后?如果是这样,我们是否可以在foo()内终止程序而不必执行main()呢?它通过将cout重定向为nothing来隐藏“爱”的输出。它只打印“我爱你”。非常聪明,不需要用特别的方法来做,用简单的方法来做,这就是你所做的。这和litb的答案一样好,如果没有那么酷的话。确实做得很好!实际上,它会产生错误的输出。如果标准确实处理iostream(和所有其他标准头)不同的是。编译器只允许在代码中插入定义,而不实际包含头文件。同样,即使允许编译器这样做,大多数当前的实现也不允许。无论如何,尖括号的使用有着具体的含义(对于某些编译器,它将首先在编译器和系统范围目录中搜索文件,然后在本地搜索),然后再次(再次)其他编译器将尖括号和双引号同等对待。换句话说,“对于‘特殊’的某些定义。”@ DavidRodr·Guez Dr.BeaBeas:但不是<代码> IoSturn.H./C>,它不是库的一部分。在C++中,()是一个特殊的函数,也是唯一允许标准声明返回类型而实际上不返回任何东西的(在这种情况下,标准称编译器将像用户返回的0那样执行)。@DavidRodríguez dribeas:尽管如此,它仍然需要返回类型
int
。这不起作用,因为“Love”是一个字符串,而不是标识符或符号名。所以你的答案是“去看看那边的另一个答案”?-1,因为这不是真的。
#include <iostream> 
#include <cstdio> 
#include <sstream> 

#define cout     printf("I love you\n"); std::ostringstream os; os 

int main() 
{ 
    cout << "love"; 
}
#include <iostream>
#include <cstdlib>
using namespace std;

int fnfoo(int inum){
   cout << "I Love You" << endl;
   return (exit(0),inum);
}

int dummy = fnfoo(5);

int main()
{
   cout << "Love" << endl;
}