程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 對C++ Primer的10.3.9單詞轉換的思考

對C++ Primer的10.3.9單詞轉換的思考

編輯:C++入門知識

#include <iostream>
#include <string>
#include <map>
#include <fstream>
#include <sstream>

using namespace std;
ifstream& open_file(ifstream&,const string&);

int main(int argc, char **argv)
{
    map<string, string> trans_map;
    string key, value;
    if (argc!= 3)
        throw runtime_error("wrong number of arguments");
    ifstream map_file;
    if (!open_file(map_file, argv[1]))
        throw runtime_error("no transformation file");
    while (map_file>>key>>value)
        trans_map.insert(make_pair(key, value));
    ifstream input;
    if (!open_file(input, argv[2]))
        throw runtime_error("no input file");
    string line; 
    while (getline(input, line))
    {
        istringstream stream(line); 
        string word;
        bool firstword = true;
        while (stream >> word) {
            map<string, string>::const_iterator map_it =trans_map.find(word);
            if (map_it != trans_map.end())
                word = map_it->second;
            if (firstword)
                firstword = false;
            else
                cout << " ";
            cout << word;
        }
        cout << endl; 
    }
    return 0;
}

這篇代碼有幾個知識點可以復習一下:

1.main函數的形參

  main(int argc, char **argv); 

argc是一個整型變量,指的是命令行輸入參數的個數,argv是字符串數組,它包含argc個字符串,每個字符串存儲著一個命令行參數,其也可以寫作char *argv[]。如argv[0]存儲著第一個命令行參數字符串,argv[1]存儲著第二個命令行參數字符串,argv[argc-1]存儲著最後一個命令行參數字符串。一般來說,argv[0]存儲的是當前程序的路徑與全稱。

argc和argv就是一個名字,可以改變的,如寫成arc和arv,絲毫不影響。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved