0

好的,所以我正在尝试打开一个文件进行读取,并且我只想读取第一个字符,这取决于那个字符是什么,我将它发送到给定的函数。例如,如果它是一个数字,我将它发送到一个继续读取的函数,以查看它是一个 int 还是一个 float。我似乎无法弄清楚如何做到这一点

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

你可以打开你的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 回答
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 回答