如何在Ubuntu中将内容从一个文件传输到另一个文件?

时间:2019-06-24 12:34:30

标签: c++ file

我正在尝试在Linux中将一个文件的内容复制到另一个文件。 我认为我的逻辑是正确的,但我不明白错误是什么。

我的函数有3个参数。第三个参数是一个字符串,它是应该从中读取内容的文件名。

#include<iostream>
#include <curses.h>
#include<fstream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
void process(int cvar, int cclause, string fnm)
{
    ifstream fs;
    ofstream ft;

    fs.open("contents.txt");
    if(!fs)
    {
        cout<<"Error in opening source file..!!";
    }
    ft.open(fnm,ios::app);
    if(!ft)
    {
        cout<<"Error in opening target file..!!";
        fs.close();
    }

char str[255];
while(fs.getline(str,255))
{
    ft<<str;
}



    cout<<"File copied successfully..!!";
    fs.close();
    ft.close();
    getch();
}

这是我得到的错误:

g++ mainProj.cpp -lz3
/tmp/ccLBpiRs.o: In function `process(int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
mainProj.cpp:(.text+0x172): undefined reference to `stdscr'
mainProj.cpp:(.text+0x17a): undefined reference to `wgetch'
collect2: error: ld returned 1 exit status

3 个答案:

答案 0 :(得分:1)

#include <ncurses.h>并链接-inccurses。

更多here

答案 1 :(得分:0)

  

如何在Ubuntu中将内容从一个文件传输到另一个文件??

您可以使用输入流读取文件,并使用输出流写入文件。

mainProj.cpp:(.text+0x172): undefined reference to `stdscr'
mainProj.cpp:(.text+0x17a): undefined reference to `wgetch'

您已经包含头文件<curses.h>并使用了在那里声明的函数,但是您未能链接到定义这些函数的库。

答案 2 :(得分:0)

  

如何在Ubuntu中将内容从一个文件传输到另一个文件?

这是一个简单有效的代码段。有更有效的方法:

#include <iostream>  
#include <fstream>
#include <string>  

void copy_file(const std::string&  source_filename, const std::string& destination_filename)
{
    std::ifstream input(source_filename.c_str(), "b");
    std::ofstream output(destination_filename.c_str(), "b");
    const size_t BUFFER_SIZE = 1024 * 16;
    static uint8_t buffer[BUFFER_SIZE];
    while (input.read(buffer, BUFFER_SIZE))
    {
        const size_t bytes_read = input.gcount();
        output.write(buffer, bytes_read);
    }
}

上面的代码使用了一个大缓冲区。将文件内容读取(使用二进制模式),放入缓冲区,然后使用块I / O写入另一个文件。文件是流设备,在传输{大}数据块时效率最高。