在c ++中将字符串转换为整数数组

时间:2017-11-13 08:00:35

标签: c++ arrays string c++11 int

有人会帮助我理解下面代码中关于它的作用的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;
}

3 个答案:

答案 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