在文件中重复文本 - 循环问题
Repeating text in file - problems with a loop
我希望我的程序从文件中读取一些东西,但是只有在第一次出现元素时,将新元素添加到我的列表中。我的问题是我不知道如何检查。循环看起来像这样:
file >> someData >> someData2;
if(someData appeared for the 1st time)
{
add someData to list;
}
else
add someData2 to list2;
我知道如何在循环内完成所有操作,但是if
内的状况是有问题的,因为该程序不记得先前读取数据。
我的想法是:检查列表的每个元素或使用临时选项卡,该选项卡存储有一天,并且在功能结束后将消失。
好吧,正如评论中指出的那样,stl方法是使用'std :: set';为了彻底,我将说明如何使用std :: set以及如何使用普通C;
C
// initial 'list' setup
std::set<decltype(someData)> listA;
std::vector<decltype(someData2)> listB;
// filling in data
file >> someData >> someData2;
// Insert the data into the set
// if the value already exists, leave it alone and push an element into listB
if(!listA.insert(someData).second) listB.push_back(someData2);
c
// some dynamically allocated arrays
char * listA;
unsigned listAsize;
char * listB;
unsigned listBsize;
// data variables (chars, for simplicity)
char dataA;
char dataB;
// loop variable
unsigned i;
// read data
readMyData(&dataA, &dataB);
// insert conditionally into lists
for(i = 0; i < listAsize; ++i) {
if(list[i] == dataA) {
// insert dataB into list B
break;
}
}
if(i == listAsize) {
// insert dataA into listA
}
使用标准库容器。他们几乎为您做所有的工作。
#include <iostream>
#include <string>
#include <set>
#include <sstream>
#include <vector>
int main()
{
std::istringstream file("A B1 C D1 A B2 C D2"); // fake input file in memory
std::string someData; // assuming strings because they are easy
std::string someData2;
std::set<std::string> list1;
std::vector<std::string> list2;
while (file >> someData >> someData2) // read in inputs until end or failure
// note: Not handling failures
{
auto result = list1.insert(someData); // attempt to add to list1
if(! result.second) // if already in set
{
list2.push_back(someData2); // add to list2
}
}
// print contents of lists
for (const auto & out: list1)
{
std::cout << out << ' ';
}
std::cout << 'n';
for (const auto & out: list2)
{
std::cout << out << ' ';
}
}
std::set
std::vector
std::istringstream
相关文章:
- C++ 而循环问题 Codecademy 参考 [已解决]
- 按升序对数组进行排序嵌套循环问题
- 我在C 初学者中发现了无限的循环问题
- 冰雹序列C 函数需要计算序列的长度.无限循环问题
- QML&C++应用程序中的绑定循环问题
- 跳跃游戏中嵌套的循环问题
- 在文件中重复文本 - 循环问题
- C 代码循环问题
- C 如果/其他循环问题
- C 文件输入流循环问题
- C++ 中对象的循环问题
- 另一个C CIN循环问题
- C 华氏度到摄氏(反之亦然)循环问题
- C 完美的数字,带有嵌套循环问题
- 遇到 while 循环问题
- C++无限循环问题
- C++闹钟,循环问题
- 循环问题
- 简单的嵌套循环问题.*形状*
- C++数组循环问题仍然需要帮助