从命令行接收char矢量

时间:2013-01-28 05:49:04

标签: c++ vector command char endl

我正在接受命令,我希望将其存储为字符矢量。

int main()
{
    vector<char> command;
    cout << "Reservations>>";
    char next;
    cin >> next;
    while (next !='\n'){
        command.push_back(next);
        cin >> next;
    }
    for(int i=0; i< command.size(); i++)
        cout << command[i];
}

但是while(下一个!='\ n')不起作用,因为即使我点击了输入,它仍然让我打字。

2 个答案:

答案 0 :(得分:0)

获取输入到字符串然后迭代它?或者只是使用std :: string来存储命令?

int main()
{
  cout << "Reservations>>";
  std::string command;
  cin >> command;  
  std::cout << command << std::endl;

  return (0);
}

我不确定为什么你使用std :: vector但是下面的样本应该可以工作:

int main()
{
  std::vector<char> command;
  cout << "Reservations>>";
  std::string next;
  cin >> next;    
  for(size_t i = 0; i < next.size(); i++)
  {
    command.push_back(next.at(i));
  }

  for(int i=0; i< command.size(); i++)
  {
      cout << command[i];
  }

  return (0);
}

答案 1 :(得分:0)

我会用这个:

cout << "Reservations>>";
string str;
getline (std::cin, str);
vector<char> command(str.begin(), str.end());
默认情况下,

getline使用\r\n作为分隔符,与使用空格的cin进行比较。 std::string是最常见的char容器,所以我确定您不需要将其转换为vector,但我添加了最快的方法,如何做到这一点