0

さて、私は読み取り用にファイルを開こうとしています。最初の文字を読み取りたいのですが、その文字が何であるかに応じて、特定の関数に送信します。たとえば、数値の場合は、読み取りを継続する関数に送信して、整数か浮動小数点数かを確認します。私はこれを行う方法を理解できないようです

void dummy(char dum, std::ifstream& fin){
    char test = dum;
    fin>>test;
    string simple = simple + test;
    simple = simple + test;
    ofstream outFile;
    outFile.open("output.txt");
    outFile<<simple<<"\n";
    return;
}


int main(int argc, char *argv[]){
    char c;
    //ifstream readFile;
    /*if(argc >= 1){
    readFile.open(argv[1]);
    }*/
    ifstream readFile;
    readFile.open("input.txt");
    readFile.unsetf(ios_base::skipws);
    readFile>>c;
    while(!readFile.eof())
    {   
        switch(c){
        case 'a':
            dummy(a,readFile);
        }
    }
}

次のエラーがスローされ続けます:Microsoft C ++例外:メモリ位置(場所)のstd::bad_alloc。どんな助けでも大歓迎です。

4

2 に答える 2

0

エラーの原因は次のとおりです。

string simple = simple + test;

これはこれまで見たことがありませんが、まだ初期化されていない文字列を連結していると思います。代わりにこれを使用してください:

void dummy(char dum, std::ifstream& fin)
{
    char test = dum;
    fin>>test;
    string simple;
    simple = simple + test;
    ofstream outFile;
    outFile.open("output.txt");
    outFile<<simple<<"\n";
    return;
}

編集:テキストファイルから設定された文字数を読み取るには、istream::readメソッドを使用します。

char test = '\0';
fin.read( &test, 1 ); // read one character into buffer
于 2013-02-10T04:57:38.663 に答える
0

txtファイルを開いて、以下のコードで最初の文字を指定できます。最初の文字は変数sにあります。

#include <fstream>
#include <iostream>
#include <conio.h>
using namespace std;

void main (void)
{
char *s=NULL;
char str1;
ifstream file_txt("file_name.txt");
if (!file_txt)
{
cout << "sorry I cannot find txt file! ";
getch();
exit(0);
 }
file_txt >> str1;
s= &str1;
file_txt.close();
}
于 2014-12-03T19:27:42.787 に答える