Как я заставляю окно кода разделять вертикально в Visual Studio 2008? (не режим HTML)

cout << "Enter the number: ";
int number;
if (cin >> number)
{
    // throw away the rest of the line 
    char c;
    while (cin.get(c) && c != '\n')
        if (!std::isspace(c))
        {
            std::cerr << "ERROR unexpected character '" << c << "' found\n";
            exit(EXIT_FAILURE);
        }
    cout << "Enter names: ";
    string name;
    // keep getting lines until EOF (or "bad" e.g. error reading redirected file)...
    while (getline(cin, name))
        ...use name...
}
else
{
    std::cerr << "ERROR reading number\n";
    exit(EXIT_FAILURE);
}

В приведенном выше коде этот бит ...

    char c;
    while (cin.get(c) && c != '\n')
        if (!std::isspace(c))
        {
            std::cerr << "ERROR unexpected character '" << c << "' found\n";
            exit(EXIT_FAILURE);
        }

... проверяет остальную строку ввода после того, как номер содержит только пробелы.

Почему бы просто не использовать ignore?

Это довольно многословно, поэтому использование ignore в потоке после >> x является часто рекомендуемым альтернативным способом отбрасывания контента до следующей новой строки, но он рискует выбросить не-whitespace и при этом игнорируя поврежденные данные в файле. Вам может или не все равно, в зависимости от того, доверено ли содержимое файла, насколько важно избегать обработки поврежденных данных и т. Д.

Итак, когда вы будете использовать clear и ignore?

Таким образом, std::cin.clear()std::cin.igore()) для этого не требуется, но полезно для удаления состояния ошибки. Например, если вы хотите дать пользователю много шансов ввести действительный номер.

int x;
while (std::cout << "Enter a number: " &&
       !(std::cin >> x))
{
    if (std::cin.eof())
    {
        std::cerr << "ERROR unexpected EOF\n";
        exit(EXIT_FAILURE);
    }

    std::cin.clear();  // clear bad/fail/eof flags

    // have to ignore non-numeric character that caused cin >> x to
    // fail or there's no chance of it working next time; for "cin" it's
    // common to remove the entire suspect line and re-prompt the user for
    // input.
    std::cin.ignore(std::numeric_limits<std::streamsize>::max());
}

Не может быть проще с skipws или схожими?

Еще одна простая, но наполовину испеченная альтернатива ignore для вашего первоначального требования использует std::skipws, чтобы пропустить любое количество пробелов перед чтением строк ...

if (std::cin >> number >> std::skipws)
{
    while (getline(std::cin, name))
        ...

... но если он вводится как «1E6» (например, какой-то ученый пытается ввести 1 000 000, но C ++ поддерживает эту нотацию для чисел с плавающей запятой ) не согласятся с этим, вы получите number, установленный на 1, и E6 считанные как первое значение name. Отдельно, если у вас есть действительное число, за которым следуют одна или несколько пустых строк, эти строки будут игнорироваться молча.

29
задан Blorgbeard 23 March 2009 в 05:04
поделиться

4 ответа

Хорошо, я нашел решение здесь .

ответ:

  1. Окно-> Новое Окно Окна
  2. -> New Vertical Tab Group

Это копирует текущую вкладку, таким образом, Вы доберетесь [Form1.cs:1] и [Form1.cs:2] вкладки; и тогда можно использовать вертикальную группу вкладки для просмотра их рядом.

65
ответ дан Blorgbeard 14 October 2019 в 07:31
поделиться

Как бывший разработчик на CodeRush, я сомневаюсь, что это было бы вызвано CodeRush Xpress. Я в настоящее время выполняю последнюю бету CodeRush 9.1.0 на Visual Studio 2008, и разделения хорошо работают. Однако Вы могли, конечно, попытаться удалить CodeRush Xpress, чтобы видеть, разрешает ли это проблему. Если бы это делает, я рекомендовал бы отправить в DevExpress' одноранговые форумы .

сопроводительный текст http://diditwith.net/content_images/CRXSplits.png

1
ответ дан Dustin Campbell 14 October 2019 в 07:31
поделиться

Я полагаю, что это не отказ CodeRush. Ванильный 2008 устанавливает, только позволяет Вам сделать представление разделения с одним файлом на вершине и одним файлом в нижней части. Единственное рядом опция является горизонтальной функцией группы вкладки (с проблемой только наличия файла, открытого в одном из них, как Вы упомянули.)

очевидные обходные решения должны были бы или сделать копию только для чтения файла в другом месте и использования, что в одной группе вкладки, или открывают второй экземпляр VS. Это действительно имеет достойную обработку файлов, которые изменяются в других приложениях, таким образом имение того же файла, открытого в двух экземплярах, не является проблемой.

2
ответ дан Eclipse 14 October 2019 в 07:31
поделиться

Мне нравится опция вертикальной группы табуляции. Единственное, что меня беспокоит, так это то, что я не могу разместить проводник решений в обоих окнах (или свойствах, если на то пошло). Мне нужно перемещать все на одной стороне и перемещать экраны.

0
ответ дан 28 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: