首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么"ios::sync_with_studio(0)和cin.tie(0);“不能处理C++中的字符串

为什么"ios::sync_with_studio(0)和cin.tie(0);“不能处理C++中的字符串
EN

Stack Overflow用户
提问于 2021-12-21 06:31:18
回答 3查看 695关注 0票数 -1

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

代码语言:javascript
运行
复制
#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;
}

它显示一个错误:-

代码语言:javascript
运行
复制
error: 'sync_with_studio' is not a member of 'std::ios {aka std::basic_ios<char>}'
     ios::sync_with_studio(0);
     ^~~

但如果我用

代码语言:javascript
运行
复制
ios_base::sync_with_stdio(false);
cin.tie(NULL);

啊,真灵。有人能告诉我为什么上面的代码不能工作吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-12-21 06:40:26

事情就是这样的。你需要确保你写的名字是正确的。您可以随时查看https://en.cppreference.com/w/

但在本例中,请检查以下内容:斯迪奥

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

票数 1
EN

Stack Overflow用户

发布于 2021-12-21 06:40:36

您犯了一个语法错误,这里有一个函数

代码语言:javascript
运行
复制
static bool sync_with_stdio( bool sync = true );

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

默认情况下,所有八个标准C++流都与各自的C流同步。因为,同步的C++流保证线程安全(来自多个线程的单个字符可以交织,但不会发生数据竞争)。

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

票数 1
EN

Stack Overflow用户

发布于 2021-12-21 07:20:00

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

错:ios::sync_with_stdio(0)

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

默认值是真的。

请看函数的定义是消基。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70431452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档