[英]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.