在用 C++ 编写 txt 文件时无法过滤掉字符串向量
Can't filter out string vector in writing txt file in C++
我想读取一个包含文本和数字的文本文件,读取后,将该文件中的一些数据写入一个新的文本文件,该文件仅包含每行的最后 3 个数字。如果有“120,你好,嗨”的文字,我想跳过它只写“嗨”后的最后3个数字,写完这3个数字后换行。
这里我是用string vector读取的,但是获取不到我要写入的格式。我怎样才能把它写成我想要的格式?
任何帮助将不胜感激。
输入文本文件:mytext.txt
120
你好
嗨 55 66 44
嗨 1 2 3
嗨 11 22 33
你好 111 222 333
想要格式:“mynewtext.txt”
55 66 44
1 2 3
11 22 33
111 222 333
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
vector<string> VecData;
string data;
ifstream in("mytext.txt");
while (in >> data) {
VecData.push_back(data);
}
in.close();
ofstream mynewfile1("mynewtext.txt");
for (int i = 0; i < VecData.size(); i++) {
if ((VecData[i] != "120") || (VecData[i] != "Hello") || (VecData[i] != "Hi")) {
mynewfile1 << VecData[i] << " ";
}
}
mynewfile1.close();
return 0;
}
这里的问题是您正在检查 VecData[i]
不是 "120"
,或者不是 "Hello"
,或者不是 "Hi"
。这将始终是 true
.
想想 VecData[i]
是 "Hi"
的情况:
if ((VecData[i] != "120") || // (1)
(VecData[i] != "Hello") ||
(VecData[i] != "Hi"))
(1)
处的比较结果为真,因为 "Hi" != "120"
。
您应该做的是检查它不是“120”,不是“Hello”,也不是“Hi”,就像这样:
if ((VecData[i] != "120") &&
(VecData[i] != "Hello") &&
(VecData[i] != "Hi"))
我想读取一个包含文本和数字的文本文件,读取后,将该文件中的一些数据写入一个新的文本文件,该文件仅包含每行的最后 3 个数字。如果有“120,你好,嗨”的文字,我想跳过它只写“嗨”后的最后3个数字,写完这3个数字后换行。 这里我是用string vector读取的,但是获取不到我要写入的格式。我怎样才能把它写成我想要的格式? 任何帮助将不胜感激。
输入文本文件:mytext.txt
120
你好
嗨 55 66 44
嗨 1 2 3
嗨 11 22 33
你好 111 222 333
想要格式:“mynewtext.txt”
55 66 44
1 2 3
11 22 33
111 222 333
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
vector<string> VecData;
string data;
ifstream in("mytext.txt");
while (in >> data) {
VecData.push_back(data);
}
in.close();
ofstream mynewfile1("mynewtext.txt");
for (int i = 0; i < VecData.size(); i++) {
if ((VecData[i] != "120") || (VecData[i] != "Hello") || (VecData[i] != "Hi")) {
mynewfile1 << VecData[i] << " ";
}
}
mynewfile1.close();
return 0;
}
这里的问题是您正在检查 VecData[i]
不是 "120"
,或者不是 "Hello"
,或者不是 "Hi"
。这将始终是 true
.
想想 VecData[i]
是 "Hi"
的情况:
if ((VecData[i] != "120") || // (1)
(VecData[i] != "Hello") ||
(VecData[i] != "Hi"))
(1)
处的比较结果为真,因为 "Hi" != "120"
。
您应该做的是检查它不是“120”,不是“Hello”,也不是“Hi”,就像这样:
if ((VecData[i] != "120") &&
(VecData[i] != "Hello") &&
(VecData[i] != "Hi"))