我想读取我的文本文件,并输出它与输入完全一样,但问题是,它们是重复的!号码是1或0
我的c++代码
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int n, count, size = 10;
string name, ID, stamina, plusmode, type;
int main ()
{
ifstream data;
data.open("cards2.txt");
while (data)
{
data >> n;
getline (data, name, '\t');
getline (data, ID, '\t');
getline (data, stamina, '\t');
getline (data, plusmode, '\t');
getline (data, type, '\t');
for (count = 1; count <= 10; count++)
{
cout << n << " " << name << " " << ID << " " << stamina << " " << plusmode << " " << type << endl;
}
}
}我的txt文件
1 Abyss Devolos F0647 Balance NA SpeedStorm
2 Ace Dragon E7609 Attack NA HyperSphere
3 Anubion A2 E1057 Defense NA Dual-Layer
4 Balar B4 E4726 Attack NA SlingShock
5 Crystal Dranzer F0217 Balance NA Burst
6 Cyclone Belfyre F3965 Stamina Attack QuadDrive
7 Dark-X Nepstrius E4749 Defense NA SlingShock
8 Diomedes D2 E1062 Attack NA Dual-Layer
9 Doomscizor E1033 Attack NA SwitchStrike
10 Vatryek Wing Accel B9492 Attack NA Burst我的终端输出
1 Abyss Devolos F0647 Balance
1 Abyss Devolos F0647 Balance
1 Abyss Devolos F0647 Balance
1 Abyss Devolos F0647 Balance
1 Abyss Devolos F0647 Balance
1 Abyss Devolos F0647 Balance
1 Abyss Devolos F0647 Balance
1 Abyss Devolos F0647 Balance
1 Abyss Devolos F0647 Balance
1 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance
0 Abyss Devolos F0647 Balance请帮帮我。我不知道如何使它不再重复
发布于 2022-06-21 07:55:23
下面是一些读取和打印数据文件的代码。我假设您的数据是由制表符分隔的,这就是您的初始代码所暗示的,但是您没有显式地说明任何地方。
int main()
{
...
int n;
string name, ID, stamina, plusmode, type;
while (data >> n) // continue reading until no more numbers
{
data.ignore(); // skip the tab immediately after the number
getline(data, name, '\t');
getline(data, ID, '\t');
getline(data, stamina, '\t');
getline(data, plusmode, '\t');
getline(data, type, '\n'); // last data item is terminated by \n
cout << n << " " << name << " " << ID << " " << stamina << " " << plusmode << " " << type << endl;
}
}您的原始代码犯了两个错误(我用注释说明了这一点)。
第一个错误是,在读取了第一列中的数字之后,您没有意识到下一个字符是一个选项卡。您希望忽略该选项卡,以便开始阅读下一列。这就是data.ignore()所做的,它忽略了输入中的下一个字符。
第二个错误是,您的代码没有反映type列不是由选项卡终止,而是由换行符结束,所以getline(data, type, '\t');是错误的,应该是getline(data, type, '\n');
这两个错误都是一个例子,说明您没有仔细考虑输入是什么,以及您编写的代码是做什么的。你需要精确的思考。
https://stackoverflow.com/questions/72687797
复制相似问题