C++文件访问/输入和输出

C++ File accessing/ input and output

本文关键字:输出 输入 文件 访问 C++      更新时间:2023-10-16

我在使用这个程序时遇到了相当困难(请参阅下面的代码)。它应该是:

  1. 创建一个由26个组件组成的数组,对字母表中的26个字母进行字母计数,并为行计数创建一个变量。

  2. 创建一个包含文本的ASCII(或文本)文件,该文件将用作我的程序的输入。

  3. 将该文件称为"textinput",然后将输出存储在名为"textoutput"的文件中。

有人能告诉我我做错了什么吗?我不断收到"找不到文件"的错误。

#include <iostream>
#include <cstdio>
#include <iomanip>
#include <cstdlib>
#include <fstream>
using namespace std;
int main()
{
int lineCount = 0;
int letterCount[26];
for(int i = 0; i < 26; i++)
    letterCount[i] = 0;
ifstream infile;
infile.open("textinput.txt", ios::in);
if(!infile)
{
    cerr<<"File does not exist."<<endl;
    exit(1);
}
ofstream outfile;
outfile.open("textoutput.txt", ios::out|ios::binary);
if(!outfile)
{
    cerr<<"File cannot be opened."<<endl;
    exit(1);
}
char data[100];
outfile<<data;
while(infile>>data)
{
    outfile<<data<<endl;
}
while(infile)
{
    char ch1 = infile.get();
    if(ch1 == 'n')
    {
        lineCount++;
        continue;
    }
    int asciiNum = (int)ch1;
    if(asciiNum > 96)
    {
        asciiNum = asciiNum - 97;
    }
    else
    {
        asciiNum = asciiNum - 65;
    }
    letterCount[asciiNum]++;
}
infile.close();
outfile.close();
system("PAUSE");
return 0;
}

有趣的是,程序中不可能出现"找不到文件"错误1所以,我要冒险,建议您需要限定可执行文件的路径!

比如说,你用之类的东西编译

gcc program1.cpp -o program1

要执行,必须使用

./program1

因为program1不起作用。原因是,99%的确定性是,您当前的工作目录不在可执行文件的搜索路径中(您希望保持这种状态)。

除此之外,是的,请确保textinput.txt存在于同一目录中。


1(程序中没有这样的错误消息。你应该知道:你已经编程了!)

ifstream类用于从文件中读取,并且要从文件中进行读取,您必须首先创建它,而您尚未创建它,因此首先创建文件。

通过这样做:

ifstream infile;

infile.open("textinput.txt", ios::in);

您正试图从尚未创建的文件中读取,或者可能如其他答案或注释中所述,您的文件不在同一目录中。

您最好先使用ofstream在文件上写入,然后使用ifstream

如果你有文件,你的代码能工作吗?如果它确实尝试删除ios::out。如果我没有错的话,ios::out是在你不想截断文件中的旧内容时使用的,但这意味着你已经有了它。