作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在一个 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/
我是一名优秀的程序员,十分优秀!