1

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

谢谢

4

1 回答 1

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

请参阅如何刷新 cin 缓冲区?

于 2012-03-18T00:58:25.230 回答