2012-03-18 1 views
1

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

привет SO,получение консольного ввода для Cstrings

Я работаю на уступки, и мне нужно, чтобы получить ввод с консоли и сохранить его к 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» becaues это будет только вход до первого места, мне нужно, чтобы получить входной сигнал от консоли все до конца строки.

Спасибо

+0

Если она становится пропущено, есть вероятность, что у вас есть новая строка слева в входной буфер от некоторого предыдущего чтения. –

+0

Как я могу очистить буфер? –

ответ

2

Попробуйте очистить буфер cin «s перед тем, как новый входом:

#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'); 

См How do I flush the cin buffer?

+0

спасибо, что напомнили мне об этом, я забыл об этом. –

+0

Я слышал, что cin и cin.getline() не играли хорошо вместе. Теперь я знаю, почему они говорят, что ха-ха. просто нужно было поставить cin.ignore (1000, 10) после каждого cin >> –

 Смежные вопросы

  • Нет связанных вопросов^_^