C++ C++;点击回车后不返回

C++ C++;点击回车后不返回,c++,c++11,vector,cin,C++,C++11,Vector,Cin,因此,我希望能够输入如下内容: “6,-15,12,44,…”等,并将这些整数添加到向量中。 但是,当我输入所述输入并按enter键时,它不会执行任何操作。如果然后输入一个字母并按enter键,然后输入另一个字母并按enter键,它最终返回所需的结果。 如果我输入更多数字并按enter键,它将继续不返回任何内容。 有人能告诉我这里出了什么问题吗?谢谢各位。我希望我对这个问题的解释有意义 int main() { // The user inputs a string of numbers (e

因此,我希望能够输入如下内容: “6,-15,12,44,…”等,并将这些整数添加到向量中。 但是,当我输入所述输入并按enter键时,它不会执行任何操作。如果然后输入一个字母并按enter键,然后输入另一个字母并按enter键,它最终返回所需的结果。 如果我输入更多数字并按enter键,它将继续不返回任何内容。 有人能告诉我这里出了什么问题吗?谢谢各位。我希望我对这个问题的解释有意义

int main()
{

// The user inputs a string of numbers (e.g. "6, 4, -2, 88, ..etc") and those integers are then put into a vector named 'vec'.
std::vector<int> vec;

int value;
std::cin >> value;

if ( std::cin ) 
{

    vec.push_back( value );
    char separator;

    while ( std::cin >> separator >> value ) 
    {
        vec.push_back( value );
    }

}

std::cout << vec.size() << std::endl;
for ( int i = 0; i < vec.size(); i++ )
{
    std::cout << vec.at(i) << ' ';
}
std::cout << std::endl;
}
intmain()
{
//用户输入一串数字(例如“6,4,-2,88,…等),然后将这些整数放入名为“vec”的向量中。
std::vec;
int值;
标准:cin>>值;
如果(标准::cin)
{
向量推回(值);
煤焦分离器;
while(std::cin>>分隔符>>值)
{
向量推回(值);
}
}

std::cout想想你的程序解析输入的方式。首先,你总是在每个数字后都需要一个逗号,你需要它在输入的末尾吗?其次,你怎么认为你的读取无法结束循环

这就是为什么需要输入两个字符,一个在末尾作为分隔符,另一个使整型读取失败

但是,当我输入所述输入并按enter键时,它不会执行任何操作

这是对程序功能的错误解释。向程序中添加一些调试输出,您会注意到程序正在处理您的输入

while ( std::cin >> separator >> value ) 
{
    std::cout << "Read separator: " << separator << std::endl;
    std::cout << "Read value: " << value << std::endl;

    vec.push_back( value );
}

您必须在输入的末尾输入一个额外的哨兵(非数字),以中断while循环。
int main()
{
   // The user inputs a string of numbers (e.g. "6, 4, -2, 88, ..etc") and those integers are then put into a vector named 'vec'.
   std::vector<int> vec;

   std::string line;
   if ( getline(std::cin, line) )
   {
      std::istringstream str(line);

      int value;
      str >> value;
      vec.push_back( value );
      char separator;
      while ( str >> separator >> value ) 
      {
         vec.push_back( value );
      }
   }

   std::cout << vec.size() << std::endl;
   for ( int i = 0; i < vec.size(); i++ )
   {
      std::cout << vec.at(i) << ' ';
   }
   std::cout << std::endl;
}