Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.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++ fstream文件为空(简单小代码)_C++_Visual Studio 2010_Visual C++ - Fatal编程技术网

C++ fstream文件为空(简单小代码)

C++ fstream文件为空(简单小代码),c++,visual-studio-2010,visual-c++,C++,Visual Studio 2010,Visual C++,我编写了这个简单的代码来尝试这个fstream文件(“…txt”),但是文件保持为空! 有人能帮忙吗? (请注意,我有一个“自制”头文件,其中包括我通常使用的所有文件和名称空间) 这个小程序应该能够处理File.txt中的所有内容,然后让您有机会在文件中键入新行,以中断使用break的进程。但就像我说的,文件是空的 #include <myHead.h> int main() { string line; int i; fstream myFile ("Fi

我编写了这个简单的代码来尝试这个
fstream文件(“…txt”)
,但是文件保持为空! 有人能帮忙吗? (请注意,我有一个“自制”头文件,其中包括我通常使用的所有文件和名称空间)

这个小程序应该能够处理File.txt中的所有内容,然后让您有机会在文件中键入新行,以中断使用break的进程。但就像我说的,文件是空的

#include <myHead.h>

int main()
{
    string line;
    int i;
    fstream myFile ("File.txt");

    if (myFile.is_open())
    {
        while (getline(myFile,line))
        {
            cout << line << "\n";
        }

        line = "0";

        for(line;line!="break";cin >> line)
    {
        if(line != "break")
            myFile << line;
    }

        myFile.close();

    }
    else
        cout << "error, File.txt cannot be opened!";

    getch();
    return 0;
}
#包括
int main()
{
弦线;
int i;
fstream myFile(“File.txt”);
如果(myFile.is_open())
{
while(getline(myFile,line))
{
(电话线)
{
如果(行!=“断开”)

myFile读取完文件后,文件处于“已到达文件结尾”状态,这是不好的

您需要在写入(追加)之前重置流状态。这是通过流方法
clear()
完成的


此外,您可能希望显式地将文件作为输入和输出打开:
ios::in | ios::out

即使已经回答了,我想指出一个更好的结束输入的选项。如果您这样做:

#include <string>
#include <iostream>
#include <fstream>

int main(void)
{
    std::fstream file("file");
    std::string buf;

    if (file.is_open())
    {
        std::cout << "READ:" << "\n\n";
        while (getline(file, buf))
        {
            std::cout << buf << "\n";
        }

        file.clear();

        std::cout << '\n' << "WRITE:" << "\n\n";
        while (getline(std::cin, buf))
        {
            file << '\n' << buf;
            file.seekp(0, file.end);
            file.seekg(0, file.end);
        }

        file.close();
    }
    else
    {
        std::cout << "error, file could not be opened.";
    }

    return 0;
}
#包括
#包括
#包括
内部主(空)
{
std::fstream文件(“文件”);
std::字符串buf;
if(file.is_open())
{

std::我有点恼火。
myFile.close()RAIII成语意思是<代码> FStuts< /Cord>对象将关闭并处理资源。OK THX。有任何理由吗?我知道它总是没有用,但我觉得它只是好的关闭,不是吗?研究C++ ++ RAIN习惯。哦,解决你的问题是你不冲洗FSRATH。我会加个回答。谢谢!成功了!但是为什么ios::in和ios::out?这是fstream的标准,不是吗?还有一个小问题:现在当我写例如:你好,你好吗?程序“替换”空格中用enter键,所以只有一个单词,没有句子,但我不想用hello,_你好吗?哦,我只需要用getline。谢谢你的帮助,andre也是!主题可以关闭。我说,
ios::in | ios::out
将是一种明确的文件模式,让读者知道你正在打开文件进行输入和输出输出。有些人可能不记得
fstream
默认值是两者都有。显式文本不会损害代码的生成,但会提高可读性。