从文件中读取char并将结果连接到一个chars数组中

时间:2013-04-07 10:48:40

标签: c++

我有一个文本文件并逐字逐句地读取。 但我想连接这些字符并有一个数组 字符。

据我所知,我应该使用strcat。 但我无法将文件中的char读取转换为 const char *以便我可以使用strcat:

char * strcat(char * destination,const char * source);

在调试器中我可以看到chr有“Bad Ptr”。你能帮助我吗?

ifstream infile;
infile.open( "Gmv.txt", ifstream::in);

char result[1000]; 

while (infile.good())
{       
    character = infile.get();
    const char * chr = reinterpret_cast<const char *>(character);
    strcat(result, chr);
}   
infile.close();

2 个答案:

答案 0 :(得分:2)

假设你的文件是999或更少的字符,这应该工作(没有添加错误检查)。 没有必要使用strcat。事实上,在这里使用strcat是愚蠢的。

ifstream infile;
infile.open( "Gmv.txt", ifstream::in);

char result[1000]; 
int i = 0;
while (infile.good())
{       
    result[i] = infile.get();
    ++i;
}

result[i] = 0; // Add the '\0' at the end of the char array read.

infile.close();

strcat将一个以0结尾的字符数组(&#39; \ 0&#39;)作为第二个参数。你的char没有被0终止。因此你得到了错误的指针错误。

顺便说一句,你可以缩短这段时间

while (infile)
    result[i++] = infile.get();

答案 1 :(得分:1)

当C ++具有std::string

时,为什么要将数组用作字符串
std::string result;
char ch;

while (infile >> ch)
    result += ch;