Здравствуйте, Dair, Вы писали:
D>Здравствуйте, _hum_, Вы писали:
D>>>В случае, если на входе один файл и на выходе один файл, можно вообще читать из stdin, писать в stdout и решать проблему типа
__>>пропустили "и что-то там сделать"
D>$ (cat infile | ./myprogram > outfile) && mv outfile infile
параметры того, "что сделать", в командной строке
Здравствуйте, _hum_, Вы писали:
__>параметры того, "что сделать", в командной строке
Ну тогда ой.
А что, в windows нет простого int main(int argc, char** argv)? Это же стандарт, вроде.
Здравствуйте, Dair, Вы писали:
D>Здравствуйте, _hum_, Вы писали:
__>>параметры того, "что сделать", в командной строке
D>Ну тогда ой.
D>А что, в windows нет простого int main(int argc, char** argv)? Это же стандарт, вроде.
есть
только элементами argv[i] являются зависящие от платформы мультибайтовые последовательности (ascii, utf-16, utf-8 и проч.)
Здравствуйте, TimurSPB, Вы писали:
TSP>Здравствуйте, _hum_, Вы писали:
__>>Здравствуйте, TimurSPB, Вы писали:
__>>>>вы немножко не на тот вопрос отвечаете. парсить все можно. вопрос в том, что для того, чтобы открыть файл, переносимый код должен роаботать с char* , для того, чтобы парсить строку — нужно иметь wstring_t. получается противоречие, которое надо как-то разрешать.
TSP>>>Тогда ничего не конвертить и работать с char*. В общем случае сделать программу, которая может получать не char* кросплатформенной нельзя.
__>>ну и как мне тогда парсить командную строку типа "--file=c:\in.txt"?
TSP>Например вот так:
| code |
| TSP>
TSP>#include <algorithm>
TSP>char* getCmdOption(char ** begin, char ** end, const std::string & option)
TSP>{
TSP> char ** itr = std::find(begin, end, option);
TSP> if (itr != end && ++itr != end)
TSP> {
TSP> return *itr;
TSP> }
TSP> return 0;
TSP>}
TSP>bool cmdOptionExists(char** begin, char** end, const std::string& option)
TSP>{
TSP> return std::find(begin, end, option) != end;
TSP>}
TSP>int main(int argc, char * argv[])
TSP>{
TSP> if(cmdOptionExists(argv, argv+argc, "-h"))
TSP> {
TSP> // Do stuff
TSP> }
TSP> char * filename = getCmdOption(argv, argv + argc, "-f");
TSP> if (filename)
TSP> {
TSP> // Do interesting things
TSP> // ...
TSP> }
TSP> return 0;
TSP>}
TSP>
|
| |
TSP>http://stackoverflow.com/questions/865668/how-to-parse-command-line-arguments-in-c
TSP>Правда пример для "-f c:\in.txt". Можно просто не поддерживать нотацию "--file=c:\in.txt"
да, наверное, самый экономный по скорости вариант (без конвертаций)