2

ファイルをコピーする簡単なプログラムを作成しました。2 つの文字列を取得します。

1) はソース ファイルのパスです。

2) はコピーファイルの名前です。

絶対パスまたは相対パス (チルダ記号 (~) なし) を指定すると、正しく機能します。

しかし、チルダ記号 (~) を使用して相対パスを指定すると、ファイルのアドレスが見つかりません。そして、それは私を混乱させます!

ここに私のサンプル入力があります:

1) /Users/mahan/Desktop/Copy.cpp

2) ~/デスクトップ/Copy.cpp

最初のものは正しく動作しますが、2 番目のものは機能しません。

そして、ここに私のコードがあります:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    string path, copy_name;
    cin >> path >> copy_name;
    ifstream my_file;
    ofstream copy(copy_name);
    my_file.open(path);
    if(my_file.is_open())
    {
        copy << my_file.rdbuf();
        copy.close();
        my_file.close();
    }
}
4

3 に答える 3

0

std::ofstreamお取り扱いできません~homeこれは、ディレクトリへのショートカットです。動作させるには、ホームの絶対パスまたはコード実行ディレクトリに対する相対パスを指定する必要があります。

相対パスを指定するには、たとえば、コードをDesktopディレクトリで実行している場合は、~/Desktop/Copy.cpp. 与えるだけCopy.cppで十分です。

于 2015-05-23T14:43:00.090 に答える