gpt4 book ai didi

c++ - C++-整数解析

转载 作者:行者123 更新时间:2023-12-02 09:49:25 25 4
gpt4 key购买 nike

我在与'StringStream' problem from HackerRank斗争。准确地说,我得到了一个用逗号分隔的整数字符串,例如“23,4,56”,我需要解析它们并返回一个整数 vector 。

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

这是原始代码。

#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;
}

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

最佳答案

您的第一种方法几乎就在那儿,您需要使用std::getline以逗号分隔作为分隔符。

vector<int> parseInts(string str) 
{
stringstream ss(str);
string token;
vector<int> v;
while (getline(ss, token, ',')) {
int x = stoi(token);
v.push_back(x);
}

return v;
}

这是我对其进行测试的链接: https://ideone.com/JGOpS1

关于c++ - C++-整数解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61541565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com