有人会帮助我理解下面代码中关于它的作用的while循环吗?例如,从用户获取输入:1 2 3 8(未给出输入大小)和一个值(任何索引)显示数组的大小。它正在打印数组的最大值。答案是8。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
int t;
cin >> t;
while(t--)
{
string x;
getline(cin, x);
ll p;
istringstream iss(x);// use of this function
vector<ll> v;
ll ans;
while(iss>>p)// what this loop do
{
v.push_back(p);
}
ll size=v.size()-1;
sort(v.begin(), v.end());
if(size==v[size])
{
ans=v[size-1];
}
else
{
ans=v[size];
}
cout<<ans<<"\n";
}
return 0;
}
答案 0 :(得分:3)
istringstream iss(x)创建一个名为iss的字符串流,由字符串x组成。 iss&gt;&gt; p从iss流中提取下一个元素并将其放入p。返回值为int,因为变量p的类型为int。
while(iss>>p) // get an int value from string stream iss
{
v.push_back(p); // push the int value to the vector
}
你必须在cin之后使用cin.ignore()。否则下一个getline函数将只采用换行符。像这样:
cin >> t;
cin.ignore();
答案 1 :(得分:1)
string str;
cin>>str;
int size = str.size(),arr[size]; //array of size equal to string size
for(int i=0;i<size;i++)
{
arr[i] = (int)str[i]-'0'; //typecasting to int
}
对于str [i]-'0'的解释是: What is the purpose of using str[i]-'0' where str is a string? 如果无法进行广播,则可能会发生错误
答案 2 :(得分:0)
使用函数stoi()(对于int值)或stol()(对于长值)也是整数值的选项。
int n=56; // use #include<bits/stdc++.h>
string s=to_string(n); // we get string "56" that's for integer to string
int x=stoi(substr(index,length));// for string to integer