簡體   English   中英

C ++的命令行參數?

[英]Command line arguments for C++?

對於我的任務,它說我將在main.cpp中使用命令行參數./a.out user1.txt(文本文件名可以更改)。

我的main.cpp中有以下內容

int main(int argc, char* argv[]){
    string name;
    name = argv[1];
}

但是我不知道如何在BBoard cpp中為我的BBoard設置功能命名

#include "BBoard.h"
#include <fstream>
#include <algorithm>
using namespace std;

User user_l;
BBoard::BBoard(){
    title = "Default BBoard";
    vector<User> user_list;
    User current_user;
    vector<Message> message_list;
}

BBoard::BBoard(const string &ttl){
    title = ttl;
}

void BBoard::setup(const string &input_file){
    ifstream fin;;
    fin.open(input_file);
    while(!fin.eof()){
        user_list.push_back(user_l);
    }
}

這里有BBoard標題

#ifndef BBOARD_H
#define BBOARD_H

#include <iostream>
#include <string>
#include <vector>
using namespace std;
class User
{
public:
    User() { }

    User(const std::string& _name, const std::string& _pass)
        : name(_name), pass(_pass)
    { }

    friend bool operator==(const User& lhs, const User& rhs)
    {
        return (lhs.name == rhs.name) &&
               (lhs.pass == rhs.pass);
    }
private:
    std::string name;
    std::string pass;
};
class Message{
};
class BBoard{
private:
    string title;
    vector<User> user_list;
    User current_user;
    vector<Message> message_list;
public:
    BBoard();
    BBoard(const string &ttl);
};

#endif

編輯:如何使用main cpp中的對象將名稱發送到我的BBoard函數? 當我嘗試將主cpp包含在我的電路板cpp中時,我會收到錯誤。

你真是太近了 您只需編輯main()函數即可創建BBoard對象,並將name傳遞給它,方法與將argv[1]傳遞給std::string 然后,您可以調用該對象上的函數,或將該對象傳遞給其他函數。


風格建議:

如果有人忘記將文件名傳遞給程序會怎么樣? 就目前而言,你崩潰了。 如果argc只有1,那么很容易告訴用戶錯誤和保釋:

if (argc == 1) {
    cout << "usage: a.out file.txt\n";
    return 1;
}

並非所有程序員都using namespace std .cpp文件中執行此操作沒有任何問題,但是我個人感到不安的是#include -ing一個頭文件在未經我同意的情況下using namespace XXX調用的效果。 實際上,您的頭文件已經完全限定了 std命名空間中的內容,因此您可以從頭中刪除該行而無需進行其他更改。 為了防止我在使用標題時感到沮喪,你只需要從標題中刪除using namespace std並使用std::vector而不是簡單的vector

那么創建一個BBoard然后調用setup函數呢:

if (argc > 1) {
   string name = argv[1];
   BBoard board;
   board.setup(name);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM