检查数组中是否有字符串中的值,如果没有,则添加它
Check if there is a value from a string in the array, if not, then add it
所以,我有很多字符串看起来像:
!,3,1,10,27,13,078,43,05,31,307,48,16,24,042,43,02,10,267,43
!,3,2,10,26,03,031,36,07,75,215,51,09,57,121,53,30,40,234,50
!,3,3,10,23,29,117,46,04,36,114,46
!,3,1,10,27,13,078,43,05,31,307,48,16,24,042,43,02,10,267,43
!,3,2,10,26,03,031,36,07,75,215,51,09,57,121,53,30,40,234,50
!,3,3,10,23,29,117,46,04,36,114,46
我需要在一定数量的逗号之后打印一些值。但前提是它们是第一次出现。已知值的数量小于 100。我已经处理了从该行输出值的代码部分,但我无法处理任务的第二部分。我创建了一个包含 100 个项目的数组并使用命令 std::find 进行搜索,如果数组中不存在该值,则添加一个值,但程序输出是错误的。我也需要在不使用向量的情况下解决此任务:/
我试过这种方式:
#include <iostream>
#include <string>
#include <fstream>
int main() {
int k;
std::string line;
std::ifstream logs_("C:/Users/Ivan/Desktop/gpgga.txt");
std::ofstream pout("C:/Users/Ivan/Desktop/outLOG.txt");
int num = 100;
int* Memory = new int[num];
bool ExitFlag;
if (logs_.is_open()) {
while (getline(logs_, line)) {
k = 0;
for (size_t i = 0, N = 4; i < line.size(); i++) {
if (line[i] == ',') k++;
if (k == N) {
N += 4;
for (int f = 0; f < num; f++) {
if (Memory[f] != stoi(line.substr(i + 1, 2))) {
ExitFlag = false;
Memory[f] = stoi(line.substr(i + 1, 2));
}
}
if (ExitFlag == false) {
pout << "Satellite name: " << line.substr(i + 1, 2) << std::endl;
}
}
}
logs_.close();
std::cout << "Success" << std::endl;
}
}
else std::cout << "File is not open" << 'n';
pout.close();
return 0;
}
但它的输出什么都没有
这是另一个尝试:
#include <iostream>
#include <string>
#include <fstream>
int main() {
int k;
std::string line;
std::ifstream logs_("C:/Users/Ivan/Desktop/gpgga.txt");
std::ofstream pout("C:/Users/Ivan/Desktop/outLOG.txt");
int array[100];
int size = sizeof(array) / sizeof(array[0]);
if (logs_.is_open()) {
while (getline(logs_, line)) {
k = 0;
for (size_t i = 0, N = 4; i < line.size(); i++) {
if (line[i] == ',') k++;
if (k == N) {
for (int j = 0; j < size; j++) {
int* foo = std::find(std::begin(array), std::end(array), stoi(line.substr(i + 1, 2)));
if (foo = std::end(array)) {
pout << "Number: " << line.substr(i + 1, 2) << " ";
array[j] = stoi(line.substr(i + 1, 2));
}
}
N += 4;
}
}
logs_.close();
std::cout << "Success" << std::endl;
}
}
else std::cout << "File is not open" << 'n';
pout.close();
return 0;
}
理论上程序必须输出 27, 05, 16, 02, 26, 07, 09, 30, 23, 04
电流输出: 数字: 27数字: 27 数字: 27 数字: 27 ...100次 编号: 05 编号: 05 编号: 05 编号: 05 编号: 05 编号: 05 ...100次 它们被重复
感谢用户 Slava std::unordered_set工作
#include <unordered_set>
...
std::unordered_set<int> S;
int t;
...
for (size_t i = 0, N = 4; i < line.size(); i++) {
if (line[i] == ',') k++;
if (k == N) {
t = stoi(line.substr(i + 1, 2));
if (S.find(t) == S.end()) {
pout << "Number " << t << " " << std::endl;
S.insert(t);
}
相关文章:
- 如果没有malloc,链表实现将失败
- 如果没有数学库,我如何在C++中创建复利公式
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 为什么如果我添加这一行,我的程序会不断询问值
- 检查数组中是否有字符串中的值,如果没有,则添加它
- 为什么使用 std::vector 的代码不能编译,但使用 std::unique_ptr 如果没有 noexcept
- 如果没有重新散列,为什么 unordered_set::begin() 会改变?
- 包装器是从 strcat_s() 到 strcat() 吗?如果没有,是否可以创建一个?
- 检查私有成员变量是否在一定范围内,如果没有调整
- 我是否应该在包含虚拟方法的类上使用'memcpy'?如果没有,如何替换它?
- 编译了一个recent-C++.因此,如果没有暴露std符号,请在旧系统上运行
- 是否可以"unprivate" C++继承中的元素?如果没有怎么办?
- 在C++中加载火炬脚本模型:如果没有ATen_cuda库,则无法初始化 CUDA
- 删除 QGraphicsPixmapItem (如果它已添加到场景中).如果不添加到场景
- 如果没有 #pragma pop_macro #pragma push_macro 会发生什么?
- 在不放置新运算符的情况下,在预分配的内存上使用虚函数初始化对象 - 这可能吗?如果没有,为什么
- 如果没有带有函数签名的 rvalue 参数,是否会执行 C++ 11 中的移动语义?
- 如果没有指针,如何识别堆栈上的内存?
- C++11是否添加了C99限制说明符?如果没有,为什么不呢
- 为什么QAction没有添加到QMenu,如果QMenu是unique_ptr