Как это работает?

130
25 ноября 2020, 08:10

есть программа:

#include <iostream>
int main(){
  float volume = 0;
  std::string command = "";
  std::cin >> command;
  if (command == "vol"){
    std::cin >> volume;
  }
  std::cout << "Entered volume=" << volume;
}

если ввести не vol а потом допустим 58, а сразу vol 58 то проверка пройдет успешно, и заранее в пременную volume введется значение. Это как?

Answer 1
std::cin >> command;

читает одно слово, а именно ваше vol.

Для чтения всей строки используйте функцию getline.

Answer 2

std::cin, используя operator<<, читает из потока ввода до того, как встретит пробел (условий, на самом деле, больше, подробнее можно почитать здесь). Всё, что после пробела остаётся в буфере и может быть считано повторным вызовом этого оператора.

Можно читать всю строку до \n, с использованием getline(), либо же отбрасывать ненужные части буфера с помощью ignore().

READ ALSO
не получается добавить ATL simple object

не получается добавить ATL simple object

Создал ATL Project, в него пытаюсь добавить простой ATL объектНазвал компонент Indexer, вижла создает соответсвующий интерфейс и класс Однако в файле...

144
Аналог frexp (из С++ math.h) в С#

Аналог frexp (из С++ math.h) в С#

Пытаюсь перенести проект с C++ на C#, однако в SystemMath C# отсутствует функция разложения на экспоненту и мантиссу (frexp в C++)

117
Значение return

Значение return

Я не понимаю, куда и что возвращает оператор returnВ функции main это говорит о завершении программы с кодом 0 (успешно), а что происходит в других...

87