如何在C ++中重命名文件

时间:2015-02-24 21:41:03

标签: c++ rename dev-c++

我重命名文件的代码部分刚刚起作用。我尝试在另一个项目中单独编写它,它的工作原理。请帮帮我。

#include <iostream>
#include <stdio.h>
#include <fstream>

using namespace std;

int main () {
char address[] = "";
char newname[] = "";
int action;
char confirm;
int result;

cout << "File Manipulator 1.0" << endl;
cout << "--------------------" << endl << endl;
cout << "Type the full address of a file you wish to manipulate." << endl << endl;
ADDRESS:cin >> address;
fstream file(address);
if (!file.good()) {
    cout << "The selected file does not exist! Try again. ";
    goto ADDRESS;
} else {
    cout << endl << "-----------------------------------" << endl;
    cout << "Type 1 to move the selected file." << endl;
    cout << "Type 2 to rename the selected file." << endl;
    cout << "Type 3 to delete the selected file." << endl;
    cout << "-----------------------------------" << endl << endl;
    ACTION:cin >> action;

    if (action == 1) {
        cout << 1;
    } else if (action == 2) {
        cout << "Enter the new name: ";
        cin >> newname;
        cout << "Are you sure you want to rename the selected file? Y/N ";
        CONFIRM:cin >> confirm;
        if (confirm == 'Y' || 'y') {
            result = rename(address, newname);
            if (result == 0) {
                cout << "renamed";
            } else {
                perror("not renamed");
            }
        } else if (confirm == 'N' || 'n') {
            cout << "No";
        } else {
            cout << "You typed an invalid command! Try again. ";
            goto CONFIRM;
        }
    } else if (action == 3) {
        cout << 3;
    } else {
        cout << "You typed an invalid command! Try again." << endl;
        goto ACTION;
    }
}
return 0;
}

BTW整个代码没有完成,所以只检查重命名部分。感谢。

1 个答案:

答案 0 :(得分:-2)

嗯,这是解决方案,太糟糕了,你没有帮助。

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

using namespace std;

int main() {
string address;
string newname;

在这里你可以看到我使用了字符串而不是字符数组。

char input;
int action;
char confirm;
int result;

cout << "File Manipulator 1.0" << endl;
cout << "--------------------" << endl << endl;
cout << "Type the full address of a file you wish to manipulate." << endl << endl;

getline(cin, address);

ifstream myfile(address.c_str());

我使用ifstream c_str()函数将std::string的内容传递给C样式字符串。

// try to open the file
if (myfile.is_open())
{       

满足条件时,您必须关闭打开的文件,以便以后能够操作/使用它。

    myfile.close();
    CREATE:cout << endl << "-----------------------------------" << endl;
    cout << "Type 1 to move the selected file." << endl;
    cout << "Type 2 to rename the selected file." << endl;
    cout << "Type 3 to delete the selected file." << endl;
    cout << "-----------------------------------" << endl << endl;
        cin >> action;
        switch (action)
    {
        case 1:
        {   
            // do nothing.
        }
        break;
            case 2:
        {
            // rename file.
            cout << "Enter the new name" << endl << endl;   
            cin.ignore();

我在这里使用了ignore()函数来忽略我在调用它时指定的字符数量。

            getline(cin, newname);
            cout << "Are you sure you want ot rename the selected file ? Y/N" << endl << endl;
            cin >> confirm;
            if (confirm == 'Y' || confirm == 'y')
        {

我之前解释过的与c_str()的情况相同。

            rename(address.c_str(), newname.c_str());
        }


        }
        break;

        case 3:
        {
            // delete file.
            remove(address.c_str());
        }
        break;
            default:
        {
            cout << "You typed an invalid command!" << endl;
        }
        break;
    }
}
else
{
    cout << "The selected file does not exist! Would you like to create it? ";
    cin >> input;   

如果您输入的文件名不存在,系统会提示您创建具有指定名称的文件,然后使用goto重定向到操作菜单。

    if (input == 'y' || input == 'Y')
    {
        // create the file.
        ofstream output(address.c_str());
        output.close();
        cout << "File created";
        goto CREATE;
    }
}
return 0;
}

感谢您的尝试:)