c++ - 从文件中逐个读取一个字符并将结果连接到一个字符数组中

标签 c++

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

据我所知,我应该使用strcat。 但是我无法将从文件中读取的字符转换为 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();

最佳答案

假设您的文件不超过 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 没有以 0 结尾。因此你得到了错误的指针错误。

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

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

关于c++ - 从文件中逐个读取一个字符并将结果连接到一个字符数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15861525/

相关文章:

c++ - ‘=’ , ‘,’ , ‘;’ , ‘asm’ 或 ‘__attribute__’ 在 ‘{’ token 之前,当我使用::va_list时;

c++ - () 的优先级不大于 &&

c++ - 在编译时确定操作系统

c++ - 出现类似 "Type qualifier ' std 的错误必须是 C++ 中的结构或类名

c++ - 有没有办法根据派生类的可能性值范围来限制对象参数?

c++ - 有没有办法强制 "most vexing parse"成为错误,即使是逐个类?

C++ 使用 *this 属性调用单个辅助函数

C++ iStream、If-Else 和 vector

c# - IUnknown_SetSite 引用计数器行为

c++ - iostream 上的异常