praegune kellaaeg 18.06.2025 14:48:36
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Kymps
HV vaatleja
liitunud: 24.10.2012
|
24.10.2012 20:24:03
C++ map<string, string> kuvamine |
|
|
Ühesõnaga tahan teha CL programmi, mis oskab lugeda "arguemente", salvestab need mapi ja hiljem kuvab need. Millegi pärast viimane tegevus ei toimu. Miks?
c++:
|
#include <iostream> #include <map> #include <string> #include <sstream> using namespace std; int main(int argc,char *argv[]) { if(argc <= 1) { cout << "No arguments provided"; //displayHelp(); } map<string, string> args; map<string, string>::iterator vars; for(int i = 1; i < argc; i++) { stringstream ssArg; string sArg; ssArg << argv[i]; ssArg >> sArg; if(argv[i] == "-") { bool argument = true; if(sArg == "-h") { argument = false; } if(argument) { i++; stringstream ssArg2; string sArg2; ssArg2 << argv[i]; ssArg2 >> sArg2; args[sArg] = sArg2; } else { args[sArg] = "0"; } } } for (vars = args.begin(); vars != args.end(); vars++) { cout << (*vars).first << " => " << (*vars).second << endl; cout << "123" << endl; } cout << "It works?" << endl; }
|
_________________ Ei. |
|
tagasi üles |
|
 |
DoS
HV veteran

liitunud: 19.08.2002
|
24.10.2012 22:30:46
|
|
|
Ei ole midagi näidata, kuna argv[i] ei saa kunagi olla "-". Küll aga saab näiteks argv[i][0] olla '-' (aga mitte "-").
|
|
Kommentaarid: 50 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
47 |
|
tagasi üles |
|
 |
Kymps
HV vaatleja
liitunud: 24.10.2012
|
24.10.2012 22:58:05
|
|
|
Tjah, alguses oligi if(argv[i][0] == "-"), aga selle peale viskas kompilaator errori. Kui "-" asendada '-'ga, siis töötab tõesti, aitäh. Oskad ehk seletada, mis vahe neil kahel on?
_________________ Ei. |
|
tagasi üles |
|
 |
DoS
HV veteran

liitunud: 19.08.2002
|
25.10.2012 00:05:37
|
|
|
"a" on \0'ga lõppev char array, 'a' on char
ehk siis argv[i] tüüp on char *, st viit char tüüpi muutujale, "-" on samuti char *, aga asub mälus teises kohas, st need kaks ei saa antud juhul võrduda (võrreldakse viita, mitte väärtust). error tuligi selle pärast, et sa üritasid viita väärtusega võrrelda.
argv[i][0] tüüp on char (sisuliselt 8-bitine märgiga arv), '-' on sama moodi char ja need on võrreldavad. nt ('-' == 45) on tõene.
|
|
Kommentaarid: 50 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
47 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|