获取Cstrings的控制台输入

时间:2012-03-18 00:52:39

标签: c++ c string cstring c-strings

注意:这是在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&gt;&gt; tempCString”因为它只会获得第一个空格的输入,我需要从控制台获取输入到换行符的所有内容。

谢谢

1 个答案:

答案 0 :(得分: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?