gpt4 book ai didi

c++ - 我应该将printf与std::cin混合使用吗?

转载 作者:行者123 更新时间:2023-12-01 14:43:07 24 4
gpt4 key购买 nike

Update2:缓冲区是我在第二个问题中正在寻找的东西。谢谢。

更新:感谢您的回答。我将在I / O流上进行更多的研究和实践。

如果您不介意的另一个问题是:

我在化学工程 Realm 有一定的背景,我们经常必须处理I / O流之间随着时间的推移而产生的积聚。

考虑到与物理 Material 流相比,数字信号或多或少是完美的(?),这可能是一个奇怪的问题。但是实际上,是否会发生类似的情况?

也许相关的 Realm 是网络安全?

我正在尝试与C一起练习C++,而且我知道C++在涉及到诸如std i / o之类的某些问题时会更加通用和安全。

但是,尝试使用std::cout将句子分解成小块,实在令人沮丧。当您必须输入很长的字符串时,工作就会成倍增加。与更简单的printf相比,这简直太违反直觉。

例如:

// The same line of code with printf()
printf("#%2d", i);

// Compared to C++ where I have to include the formatting library.

我的问题是,如果安全性是iostream库的全部内容,那么严格地将 printf用于输出,将 std::cin用于输入是否安全?

最佳答案

因此,您的问题是:将printf与cin混合使用是否安全?

答案是肯定的!是的,我们可以,您可以在C++中使用C函数和库,尽管C++函数和库更加安全并且应该进行优化,但有时printf的速度比cin快得多,但这取决于您要打印的内容。 printf必须解析您输入的字符串,而cin也必须执行一些复杂的操作。同样,正如@Sebastian指出的那样,速度将取决于刷新输入缓冲区的数量。

假设我想通过使用printf和std::cout在没有任何新行的情况下将字符串“Hello,World”打印10,000次,通过在我的机器上尝试得到以下结果:

printf用了11619360 [µs]-> 11.61936 [s]

cout用了3243804 [µs]-> 3.243804 [s]

下面是以下代码:

#include <iostream>
#include <chrono>
#include <stdio.h>
int main()
{
std::chrono::steady_clock::time_point time1 = std::chrono::steady_clock::now();
for(unsigned int i=0;i<10000;i++)
{
printf("Hello, World");
//std::cout << "Hello, World";
}
std::chrono::steady_clock::time_point time2 = std::chrono::steady_clock::now();

std::cout << "Duration " << std::chrono::duration_cast<std::chrono::microseconds>(time2 - time1).count() << " [µs]" << std::endl;
return 0;
}

在这里,std::cout比printf快,但这全取决于您要打印的内容

关于c++ - 我应该将printf与std::cin混合使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61049448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com