【发布时间】:2012-12-03 17:26:55
【问题描述】:
我知道了
inline ostream & _Cdecl ostream::operator<< (const signed char * _s) {
outstr(_s, (const signed char *)0);
return *this;
}
是在 iostream.h 头文件中声明(重载)插入运算符 (
我试过了
#include<iostream.h>
int main() {
outstr("Hello world!", (const signed char *)0);
return 0;
}
结果出错了。我想使用这样的东西来看看是否有一些可能的方法来回答这个在屏幕上打印一些东西而不使用 printf、cout 或 puts() 的查询。
更新:如果您有任何其他建议,我会很欢迎
#include<stdlib.h>
void main() {
system("echo /"Hello world!/"");
}
注意:如果您可以提供无需 printf()、cout 或 puts() 即可打印的 C 等效代码,我没有任何限制
【问题讨论】:
-
"在 iostream.h 头文件中" --> "在 你的 iostream.h 头文件中"
-
这样做不会节省大量的操作时间。此外,如果您想在不使用 cout、printf 或 puts 的情况下打印某些内容,您可以尝试的一种解决方案是调用系统调用。
-
@SidR 当您第一次发表评论时,我以为您的意思是向内核的输出例程调用一些特定于系统的函数(一个低级调用,如 printf 或发帖人的 outstr 调用可能会做的)。调用 system() 函数来调用 echo 将是一件可怕的事情,如果 OP 在面试中提出这个建议,他不仅不会得到这份工作,他还会受苦(在这里插入荒谬的夸张) .
-
@SidR 当你调用
system()时,你正在生成一个新进程,如果它的目的只是为了输出一些东西,这是一个非常昂贵的操作。通常(也许总是,我不确定),该进程是一个 shell,然后 shell 将生成第二个进程(对于 echo 命令,在您的情况下),因此成本增加了一倍,这在其单一成本中可能是不可接受的。 -
@mah:感谢您的解释。虽然我承认我的理解并不完美,但我试图回答他询问是否可以在不使用 printf、cout 或 puts() 的情况下打印某些内容的部分。