Как вывести целочисленное значение в аргументе командной строки для символов эквивалентной длины, как значение в C ++? - PullRequest
0 голосов
/ 03 апреля 2011

Я получил значение, скажем 10, и я хочу вывести его в xxxxxxxxxx (10 x). Как мне это сделать? Значение 10 передается через командную строку.

Я пробовал это, но он не делает то, что я хочу:

for (i = 1; i < argc; i++){                 
    cout << argv[i++] << " " << argv[i] << endl;
} // i cant get the argv[i] to print out the value in 'x'

Ответы [ 3 ]

2 голосов
/ 03 апреля 2011
if (argc>1)
  cout << string(atoi(argv[1]), 'x');
1 голос
/ 03 апреля 2011

Есть способ использовать потоки, но я не знаю, как это сделано: это что-то вроде cout.SetPrecision ().Но способ C состоит в том, чтобы предоставить спецификацию формата.

int
main (int argc, char **argv)
{
    printf ("%*d\n", atoi(argv[1]), 10);  // outputs 10 into fieldwidth given by parameter
}

Требуется немало разработки для обработки патологий ввода, но основная концепция работает.* означает использование следующего параметра в качестве ширины поля.

0 голосов
/ 03 апреля 2011

Вам просто нужно

std::cout << std::string(10, 'x');

Так полноцвет:

#include <iostream>
#include <string>
#include <sstream>

int main(int argc, const char* args[])
{
    if (argc>1)
    {
        std::istringstream iss(args[1]);
        unsigned long i = 0;
        iss >> i;
        std::cout << std::string(i, 'x');
    }
    return 0;
}

Смотрите здесь

...