为什么"ios::sync_with_studio(0)和cin.tie(0);"不适用于C++中的字符串



我使用C++解决了一个问题,其中我必须使用字符串作为输入。因此,我没有使用标准的输入/输出方法,而是尝试使用快速输入/输出法。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_studio(0);
cin.tie(0);

string str;
cin>>str;
cout<<str;
return 0;
}

它显示了一个错误:-

error: 'sync_with_studio' is not a member of 'std::ios {aka std::basic_ios<char>}'
ios::sync_with_studio(0);
^~~

但是如果我使用

ios_base::sync_with_stdio(false);
cin.tie(NULL);

它奏效了。有人能说出为什么上面的代码不起作用以及为什么这个能起作用吗

就是这样。你需要确保你写的名字是正确的。你总是可以看看https://en.cppreference.com/w/.

但在这种情况下,请检查以下内容:std::ios_base::sync_with_stdio

还要记住,如果设置为false,C++标准流对象(如coutclogcerrwcout等(将不会同步,并且如果混合它们,您可能会看到意外的交错输出。

您犯了一个语法错误功能

static bool sync_with_stdio( bool sync = true );

设置在每次输入/输出操作之后,标准C++流是否与标准C流同步。

默认情况下,所有八个标准C++流都与它们各自的C流同步。作为,同步的C++流保证是线程安全的(从多个线程输出的单个字符可以交错,但不会发生数据争用(。

但是,在进行竞争性编程时,人们通常关心更快的代码执行,而不是质量和安全。因此,当同步被关闭时,C++标准流被允许独立地缓冲它们的I/O,从而允许更快的执行。

ios::sync_with_stdio不接受您尝试的int

错误:ios::sync_with_stdio(0)

右图:ios::sync_with_stdio() or ios::sync_with_stdio(false)

默认值为true。

请参阅函数定义是xiosbase。

最新更新