我正在尝试在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
答案 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写入另一个文件。文件是流设备,在传输{大}数据块时效率最高。