C ++-整数解析

问题描述 投票:0回答:1

我正在为HackerRank的'StringStream'问题苦苦挣扎。准确地说,我得到了一个用逗号分隔的整数字符串,例如“ 23,4,56”,我需要解析它们并返回一个整数向量。

我尝试了各种方法来解决此问题,但它们对我不起作用。

这是原始代码。

#include <sstream>
#include <vector>
#include <iostream>

using namespace std;

vector <int> parseInts(string str)
{
    // Function to complete.
}

int main()
{
    string str;
    cin >> str;

    vector <int> integers = parseInts(str);

    for (int i = 0; i < integers.size(); i++)
    {
        cout << integers[i] << "\n";
    }

    return 0;
}

这是我的第一个主意,使用StringStream库进行转换。

vector <int> parseInts(string str) 
{
    stringstream ss(str); 
    int number;
    // To help with conversion.

    vector <int> temporary;
    // Vector of results.

    for (int i = 0; i < str.length(); i++)
    {
        ss >> number;
        temporary.push_back(number);
    }

    return temporary;
}

这是我的第二个主意。

vector <int> parseInts(string str) 
{
    int number;
    vector <int> temporary;

    for (int i = 0; i < str.length(); i++)
    {
        number = (str[i]);
        temporary.push_back(number);
    }

    return temporary;
}

这是最后一个主意,我想研究char *。

vector <int> parseInts(string str)
{
    char* characters;
    strcpy(characters, str.c_str());
    int numbers;
    vector <int> temp;

    for (int i = 0; i < str.length(); i++)
    {
        numbers = stoi(characters);
        temp.push_back(numbers);
    }

    return temp;
}

除了上一个示例,他们还返回了一些奇怪的数字。我该如何处理?

c++ parsing stringstream
1个回答
0
投票

您可以执行以下操作:

stringstream ss;
ss << str;
vector<int> res;
while (ss) {
    int n;
    ss >> n;
    res.push_back(n);
    char c;
    ss >> c;
}
© www.soinside.com 2019 - 2024. All rights reserved.