получение консольного ввода для Cstrings - PullRequest
1 голос
/ 18 марта 2012

примечание: это на C ++, но с использованием строк в стиле C

привет ТАК,

Я работаю над заданием, и мне нужно получить ввод с консоли и сохранить его в cstring. Все компилируется нормально, но когда программа запускается, она просто пропускает входные данные от пользователя. Таким образом, он выведет: «Введите строку для вставки:», затем пропустите функцию cin.getline, затем выполните следующую команду.

Вот мои заголовочные файлы, объявление cstring и строка кода, с которой у меня проблемы.

#include "stdafx.h"
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
  char tempCString[500] = {};

//...code snipit...

  cout << "Enter string to be inserted: " << endl;
  cin.getline(tempCString, 500, '\n'); //I've also tried cin.getline(tempCString, 500);

//...end code snipit...

  return 0;
}

примечание: я не могу использовать "cin >> tempCString", потому что он будет получать ввод только до первого пробела, мне нужно получить ввод с консоли всего до новой строки.

Спасибо

1 Ответ

2 голосов
/ 18 марта 2012

Попробуйте очистить буфер cin перед получением нового ввода:

#include <limits>

cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max());
cout << "Enter string to be inserted: " << endl;
cin.getline(tempCString, sizeof(tempCString), '\n');

См. Как очистить буфер cin?

...