gpt4 book ai didi

C++——如何将一个字符串转换为多个整数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:39:01 27 4
gpt4 key购买 nike

我在一个 SVG 文件中绘制形状,该文件是我通过使用 .dat 文件提供的输入生成的。

我需要从 .dat 文件中取出一行,并从中删除 4 个单独的整数,然后将这些整数保存到一个 vector 中。为此,我尝试创建一个类 square,它包含 4 个整数(它们代表正方形的左上角和右下角坐标)。最好是,我能够在该类的构造函数中执行此操作,但我不知道该怎么做。

基本上,我知道我会得到一个类似于“1 1 50 50”的字符串,并且我想将它变成 4 个整数。我遇到的问题是我需要使它成为类对象的 4 个整数,而不仅仅是 4 个整数。

class SQ
{
public:
sq() = default;
static int tl_x;
static int tl_y; //top left corner
static int br_x;
static int br_y; //bottom right corner
};

我试过下面的代码,但它显然不起作用,因为它只保存它遇到的第一个整数。

while (getline(file,s))
{
int *f = new int(stoi(s));
vec.push_back(f);
}

我感谢任何帮助:)

最佳答案

如果你读到一行整数,比如 "1 1 50 50"转换成一个字符串并需要解析字符串中的整数,那么处理转换的标准 C++ 方法是创建一个 stringstream从您的字符串中使用 iostream 从字符串流中提取整数。

例如:

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

int main (void) {

std::istringstream is { "1 1 50 50\n" }; /* simulated input */
std::string s;
std::vector<int> vect;

while (getline (is, s)) { /* read string */
int f; /* declare int */
std::stringstream ss (s); /* make stringstream from s */
while ((ss >> f)) /* read ints from ss into f */
vect.push_back (f); /* add f to vector */
}

for (auto& i : vect) /* output integers in vector */
std::cout << i << '\n';
}

(如果您需要单独存储所有行,只需使用 std::vector<std::vector<int>> vect; )

注意首字母 istringstream只是一种模拟 getline 输入的方法.

示例使用/输出

$ ./bin/ssint
1
1
50
50

检查一下,如果您还有其他问题,请告诉我。

关于C++——如何将一个字符串转换为多个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55628085/

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