Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将ifstream替换为of stream donds';没有效果_C++_Io - Fatal编程技术网

C++ 将ifstream替换为of stream donds';没有效果

C++ 将ifstream替换为of stream donds';没有效果,c++,io,C++,Io,在此代码中: //Program To Read Words Separated By White Space #include<iostream> #include<fstream> #include<string> int main() { std::string s; std::ifstream f; f.open("file.txt",std::ios::in); std::cin.rdbuf(f.rdbuf()

在此代码中:

//Program To Read Words Separated By White Space
#include<iostream>
#include<fstream>
#include<string>


int main()
{
    std::string s;

    std::ifstream f;
    f.open("file.txt",std::ios::in);

    std::cin.rdbuf(f.rdbuf());

    while(std::cin>>std::skipws>>s)
        std::cout<<s<<'\n';
    return 0;
}
//读取由空格分隔的单词的程序
#包括
#包括
#包括
int main()
{
std::字符串s;
std::iff流;
f、 打开(“file.txt”,std::ios::in);
标准:cin.rdbuf(f.rdbuf());
而(std::cin>>std::skipws>>s)

std::cout几乎流的
fstream
和流的
之间唯一的区别是流的
在打开文件之前添加
out
选项。
也就是说,您的流在两个方向上都是开放的

您可能会认为这是一个错误,但考虑到类层次结构,要很好地修复它并不容易

这就是说,您不应该为
ifstream
of stream
指定任何方向,而是编写

std::ifstream f;
f.open("file.txt");
或者,更习惯地说

std::ifstream f("file.txt");

代码中没有流的
。@MaximeGroushkin这就是为什么我问,即使替换
ifstream
,也不会干扰输出。你想做什么,将
std::cin
重定向到
file.txt
?这并不能解决问题,但要养成用有意义的值初始化对象的习惯而不是默认初始化它们并立即覆盖它们。在这种情况下,这意味着将
std::ifstream f;f.open(“file.txt”,std::ios::In);
更改为
std::ifstream f(“file.txt”,std::ios::In);
@AgrudgeAmicus——假设默认构造函数执行一些需要很长时间的网络查找,而另一个构造函数则不执行。但更一般地说,将有意义的初始化与创建分离会留下一个间隙,并可能出现错误;假设在维护过程中,您删除了设置值的代码;代码是仍然有效,但您的对象初始化不正确。