C++ cin一行上未定义的坐标数

C++ cin一行上未定义的坐标数,c++,C++,我试图在一行上定义一个未定义的坐标数(x,y,weight)。例如: Please enter all the coords: (1,2,5) (1,5,7) (2,5,2) (2,4,4) (2,3,5) (3,4,1) (4,5,9) 我将在2d数组中存储它们,因此对于我的第一个coord,它将类似于: array[1][2] = 5 如果每行只有一个coord,我会这样做: cin >> trash_char >> x >> y >>

我试图在一行上定义一个未定义的坐标数(x,y,weight)。例如:

Please enter all the coords:

(1,2,5) (1,5,7) (2,5,2) (2,4,4) (2,3,5) (3,4,1) (4,5,9)
我将在2d数组中存储它们,因此对于我的第一个coord,它将类似于:

array[1][2] = 5
如果每行只有一个coord,我会这样做:

cin >> trash_char >> x >> y >> weight >> trash_char;
array[x][y] = weight
我如何才能在一条线上为数量不确定的coords做到这一点

谢谢大家

像这样

#include <sstream>
#include <iostream>
#include <string>

string line;
getline(cin, line);
istringstream buffer(line);
while (buffer >> trash_char >> x >> y >> weight >> trash_char)
{
  // do something
}
#包括
#包括
#包括
弦线;
getline(cin,line);
istringstream缓冲区(行);
而(缓冲区>>垃圾字符>>x>>y>>重量>>垃圾字符)
{
//做点什么
}
使用getline将一行读入字符串。然后将该字符串包装在istringstream中,以便从中读取坐标。

定义一个结构

struct Coord3D{
     float x,y,z;
};
定义插入运算符

template<typename ReadFunc>
istream& operator >> (istream& stream, Coord3D& coord){
     return ReaderFunc(stream, coord );
}
像这样使用它

 //template instantiation, probably wrong syntax
template<MyCoordReader> istream& opeartor >> (istream&,Coord3D&);

int main(){
   std::vector<Coord3D> coordinates;
   Coord3D coord;
   while( cin >> coord ){ coordinates.push_back(coord); }
   return 0;
}
//模板实例化,可能语法错误
模板istream&opeartor>>(istream&Coord3D&);
int main(){
向量坐标;
Coord3D coord;
while(cin>>坐标){坐标。向后推(坐标)}
返回0;
}

您尝试了什么,它是如何失败的?现在我正在为固定数量的坐标做这件事,因为我仍然不确定处理最佳方式的最佳方式…如果您可以做1个坐标,那么您可以使用
getline
读取一行,并将其拆分为单个坐标。出于某种原因,getline在Mac上的xcode下无法工作,怪怪的:哦,我不能输入任何东西可能是这个原因。不看代码就说不出来。如果getline真的不能在Mac上运行,我会感到惊讶;技巧做到了,现在,唯一的问题是它永远不会进入while循环:O我有相同的确切代码我想我找到了它,它只是while(缓冲区)
 //template instantiation, probably wrong syntax
template<MyCoordReader> istream& opeartor >> (istream&,Coord3D&);

int main(){
   std::vector<Coord3D> coordinates;
   Coord3D coord;
   while( cin >> coord ){ coordinates.push_back(coord); }
   return 0;
}