这就是我要告诉我的是否必须发布所有内容。我想要的是如果他们键入“tcc fcc(enter)”我想要cube.rotateTopNeg90()然后cube.rotateFrontNeg90()来处理打印的多维数据集。 编辑:对不起,这是我上面的问题,现在这些命令一次只能工作一次(即:'tcc'(输入)'fcc'(输入)...)我希望它是这样的('tcc ''fcc''tcc''tcc'....(重复多次)(输入))然后每个都连续处理。这就是为什么我不能只使用cin。我在here之前问过这个问题,但我真的不知道怎么做。
class RubiksCube
{
public:
RubiksCube::RubiksCube() { /*stuff here*/ }
void display() { /*prints the cube unfolded here*/ }
void rotateTopNeg90() { /*moves top of the cube counterclockwise*/ }
void RubiksCube::rotateFrontNeg90() { /*moves front counterclockwise*/ }
}
//main
int main(int argc, char *argv[])
{
RubiksCube cube;
string s;
srand(time(0));
while (1)
{
string rotateTopNeg90 = "tcc";
string rotateFrontNeg90 = "fcc";
cube.display();
cout << "COMMAND:";
getline(cin,s);
istringstream stream(s);
if (s == rotateTopNeg90 )
cube.rotateTopNeg90();
if ( s == rotateFrontNeg90 )
cube.rotateFrontNeg90();
}
return 0;
}
答案 0 :(得分:0)
我认为以下内容可以解决您的问题; std::getline
从std::cin
开始占据整行,因为您的操作基于每个令牌,因此超出了您的预期。 std::cin
在空格上标记,因此op&gt;&gt;更适合您的应用。
const std::string rotateTopNeg90 ="tcc",
rotateFrontNeg90 ="fcc";
while(std::cin >> s) {
if (s == rotateTopNeg90 )
cube.rotateTopNeg90();
else if ( s == rotateFrontNeg90 )
cube.rotateFrontNeg90();
cube.display();
}