如何在 c++ 中使用向量将整行作为输入
How to take a whole line as input using vector in c++?
**示例:-动物(爬行动物鸟类(鹰鸽乌鸦))作为输入?
我没有得到这个输入的答案 动物 ( 爬行动物 鸟类 ( 鹰 鸽子 乌鸦 ) )
#include<vector>
#include<string>
#define ll long long
#include <iostream>
using namespace std;
int main()
{
ll n,m,k,cb=0,ob=0;
cin>>n;
string c;
vector<string> s;
while(cb!=ob)
{
cin>>c;
if(c=="(")
ob++;
else if(c==")")
cb++;
s.push_back(c);
}
for(ll i=0;i<s.size();i++)
cout<<s[i];
return 0;
}
第一个问题是你读到的第一件事是long long
值。 Animal
不是。
您正在检查while(cb!=ob)
。cb
和 ob
上面的某些行都使用 0
初始化。所以你的循环永远不会运行。
即使您修复了循环,下一个问题也将是您的输入不是以(
开头。因此,在阅读Animal
后,您的循环将退出。
第三个问题是你的输出。完成后,您不会冲洗cout
。另外:你为什么使用long long
进行i
? std::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;
}
另一件事:如果括号不匹配(无限循环或过早中断)并且不会处理最后一个右括号后面的文本,则此代码将不起作用。
由于您的问题并没有真正具体说明您想要什么,我的答案只是向您展示主要问题。
我还建议您检查输入流是否存在错误。
相关文章:
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 如何从用户那里获取输入并将其存储在向量中?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- 输入验证将数字放入向量中
- 将矩阵乘以我自己的输入的向量
- 如何在数组和向量 c++ 中存储和保存输入
- 使用多个输入向量中值的笛卡尔乘积调用 lambda
- 如何从输入中获取字符串向量?
- 使用某些用户输入向量[x]++增加向量的索引
- tensorflow:transpose需要一个大小为1的向量.但是输入(1)是大小为2的向量
- 使用用户输入 C++ 创建 N 个不同的向量
- 如何从输入文件中读取字符并将其存储到向量中?
- 用户输入字符串的结构的搜索向量
- 以C++为单位将已知数量的整数输入正确读取到向量中
- 可选类输入中的 C++ 填充向量
- 将输入到向量的<int>优雅解决方案
- 当输入向量称为储备金时,STD ::排序无法正常工作
- 将RCPP函数扩展到任何类型的输入向量
- 为什么我们不能在C++输入数组时输入向量?
- 如何修复输入向量与输出向量相同时不清除输入向量的错误