0

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

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

char * strcat ( char * 目标, const char * 源);

在调试器中,我可以看到 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();
4

2 回答 2

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 ('\0') 结尾的 char 数组作为第二个参数。你的 char 没有被 0 终止。因此你得到了错误的指针错误。

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

while (infile)
    result[i++] = infile.get();
于 2013-04-07T10:51:28.053 回答
1

为什么使用数组作为字符串,当 C++ 有std::string

std::string result;
char ch;

while (infile >> ch)
    result += ch;
于 2013-04-07T10:53:40.180 回答