1

私はこのプログラムでかなり苦労しています (以下のコードを参照)。それは想定されています:

  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;
}
4

3 に答える 3

1

ifstreamclass はファイルからの読み取りに使用され、ファイルからの読み取りには、まだ作成していない最初に作成する必要があるため、最初に file を作成します。

このようにして:

ifstream infile;

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

まだ作成されていないファイルから読み込もうとしている、または他の回答で説明されているか、ファイルが同じディレクトリに存在しないというコメントである可能性があります。

ofstream最初にファイルに書き込み、次に を使用することをお勧めしますifstream

于 2013-07-13T18:07:58.100 に答える
0

ファイルがある場合、コードは機能しますか? ファイル内の古いコンテンツを切り捨てたくない場合は、ios::out間違っていない場合は削除を試みますが、それは既にそれを持っていることを意味します。ios::out

于 2013-07-13T18:07:31.350 に答える