2012-03-18 49 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

如果它变得略过,有机会,你有一个新的行留在从以前的一些读取输入缓冲区。 – 2012-03-18 00:53:53

+0

我将如何去清除缓冲区? – 2012-03-18 00:56:17

回答

2

尝试获得新的输入之前清理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'); 

How do I flush the cin buffer?

+0

谢谢你提醒我,我已经忘记了这一点。 – 2012-03-18 01:07:38

+0

我听说cin和cin.getline()在一起玩的不好。现在我知道他们为什么说哈哈。只需在每个cin之后放置cin.ignore(1000,10)>> – 2012-03-18 01:13:08