如何在c ++中使用向量作为输入整行?

时间:2016-02-05 13:55:12

标签: c++ vector

**示例:-Animals(爬行动物鸟(老鹰鸽)乌鸦)作为输入? **

我没有得到这个输入的答案动物(爬行动物鸟(老鹰鸽子乌鸦))

var sh = context.shopDB.Where(p => p.fruitName == "mango" &&
                                     p.fruitName == "apple");
List<shop> shList = sh.Where(f => f.numberOfFruitsLeftToConsume >= 100 &&
                         f.numberOfFruitsLeftForStorage <= 100).ToList();

1 个答案:

答案 0 :(得分:0)

第一个问题是你读的第一件事是long long值。 Animal只是不是。

您正在检查while(cb!=ob)cbob上方的某些行都使用0初始化。所以你的循环永远不会运行。

即使您修复了循环,下一个问题也就是您的输入不是以(开头的。因此,在阅读Animal后,您的循环将退出。

第三个问题是你的输出。完成后,您不会刷新cout。 另外:为什么将long long用于istd::vector::size()返回size_t。所以请坚持下去。

一个“简单”的解决方案是这样的:

#include<vector>
#include<string>
#include <iostream>
using namespace std;

int main()
{
    int cb = 0, ob = 0;
    string c;
    vector<string> s;
    while((ob==cb && ob==0) || ob!=cb)
    {
        cin >> c;
        if (c == "(")
            ob++;
        else if (c == ")")
            cb++;
        s.push_back(c);
    }
    for (size_t i = 0; i < s.size(); i++)
    {
        cout << s[i];
    }
    cout << endl;
    return 0;
}

另一件事:如果括号不匹配(无限循环或过早中断)并且不处理最后一个右括号后面的文本,则此代码将不起作用。

由于你的问题并不是真正具体的问题,我的回答只是向你展示主要问题。

我还建议您检查输入流是否有错误。