Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ file.get(char c)和file.get(char*c,int-length)之间的差异_C++_File_Ifstream - Fatal编程技术网

C++ file.get(char c)和file.get(char*c,int-length)之间的差异

C++ file.get(char c)和file.get(char*c,int-length)之间的差异,c++,file,ifstream,C++,File,Ifstream,我正在为我的代码编写一个函数。 该函数只需要打开一个文件即可处理 下面是函数的代码: void printFile(std::ifstream &file) { file.seekg(0, file.end); int length = file.tellg(); file.seekg(0, file.beg); char *buffer = new char[length]; file.get(buffer, length); file

我正在为我的代码编写一个函数。
该函数只需要打开一个文件即可处理

下面是函数的代码:

void printFile(std::ifstream &file)
{
    file.seekg(0, file.end);
    int length = file.tellg();
    file.seekg(0, file.beg);

    char *buffer = new char[length];
    file.get(buffer, length);
    file.seekg(0, file.beg);
    char c;
    int i = 0;
    std::cout << "Uncreypted file" << std::endl;
    while (file.get(c))
    {   
        // loop getting single characters

        std::cout << c << " " << buffer[i] << " ";
        i++;
    }
    std::cout << std::endl;

    delete[] buffer;
}
void打印文件(std::ifstream&file)
{
seekg(0,file.end);
int length=file.tellg();
file.seekg(0,file.beg);
字符*缓冲区=新字符[长度];
get(缓冲区、长度);
file.seekg(0,file.beg);
字符c;
int i=0;
标准::cout
在一行之后,缓冲区输出不同的内容

这是因为您没有阅读所使用函数的文档

file.get(缓冲区,长度)
默认情况下在第一个换行符处停止

因此,您的
缓冲区只包含文件的第一行。
你的另一个
缓冲区[i]
访问是胡说八道

了解

不要“盲目”编程,当你的程序没有达到你想要的效果时,表现出惊讶的样子;

阅读文档!

这段代码让我心碎。您阅读了文档吗?阅读
get(char*c,int-length)
的文档。它不仅仅从输入流中读取
length
字符。它做了一些不同的事情。您不需要stackoverflow.com来查找get()的文档它应该在你的C++书中。是的,谢谢你的帮助,对不起,想走得太快!@ MuxiLiNeNaAK:希望这是一个宝贵的教训!