我有一个文本文件并逐字逐句地读取。 但我想连接这些字符并有一个数组 字符。
据我所知,我应该使用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();
答案 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;