printf如果您可以访问#include <stdio.h>。printf由于格式说明符,我喜欢使用它,而且感觉比做的更好std::cout << "something\n";。
#include <stdio.h>
#include <cstdlib> // to use rand()
int main() {
int randNum = rand()%10 + 1;
printf("Hey, we got %d!\n", randNum);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
与
#include <iostream>
#include <cstdlib> // to use rand()
using std::cout;
int main() {
int randNum = rand()%10 + 1;
cout << "Hey, we got " << randNum << "!\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是我所在的不和谐服务器上的用户说这是不正确的做法,因为“ printf不安全,请使用std :: cout”。
第二个用户说这很不好,因为它不是类型安全的(第一个用户确实提到了类型安全,但没有提到深度)。
第二位用户说,
类型安全性由编译器强制执行。但是,通过使用可变参数函数,编译器无法在运行时确定参数的类型;它无法提前知道他们。该函数需要某种方式来说明期望的参数类型,而
printfC函数家族则通过格式字符串说明符完成了此操作。
所以我正在寻找其他选择。
如果没有,我想我会坚持 std::cout
GNU C ++编译器在编译时g++检查printf参数。如果-Wall在命令行上指定,则在检测到不匹配时发出警告。因此,如果您正在使用此编译器,则可以使用printf而不必担心。
您的编译器可能会或可能不会提供类似的服务。但是,printf无论如何,至少应优先使用可笑的cout机制。或者对于类型安全的解决方案,您可以考虑使用Boost Format库。
编辑添加: 这个问题的讨论可能会让您感兴趣。