#c #string #vector #readfile #writefile
Вопрос:
Я хочу прочитать текстовый файл, содержащий как текст, так и число, и после его прочтения записать некоторые данные из этого файла в новый текстовый файл, содержащий только последние 3 числа каждой строки. Если есть текст «120, Привет, привет», я хочу пропустить его и написать только последние 3 цифры после «Привет» и ввести новую строку после написания этих 3 цифр. Здесь я использую строковый вектор для его чтения, но не могу получить формат, в который хочу писать. Как я могу записать его в нужный мне формат? Любая помощь будет признательна.
Входной текстовый файл:»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;
}
Комментарии:
1.
(VecData[i]!="120")||(VecData[i]!="Hello")
так всегдаtrue
.2. Измените
if((VecData[i]!="120")||(VecData[i]!="Hello")||(VecData[i]!="Hi")){
наif((VecData[i]!="120")amp;amp;(VecData[i]!="Hello")amp;amp;(VecData[i]!="Hi")){
, чтобы исправить логику.3. проблема решена. Большое спасибо!
Ответ №1:
Проблема здесь в том , что вы проверяете , что VecData[i]
это не "120"
так, или это не "Hello"
так, или это не "Hi"
так . Так будет всегда true
.
Подумайте о случае VecData[i]
, когда "Hi"
:
if ((VecData[i] != "120") || // (1)
(VecData[i] != "Hello") ||
(VecData[i] != "Hi"))
Сравнение at (1)
было оценено как Истинное, так "Hi" != "120"
как .
Что вам следует сделать, так это проверить, что это не «120», И это не «Привет», И это не «Привет», вот так:
if ((VecData[i] != "120") amp;amp;
(VecData[i] != "Hello") amp;amp;
(VecData[i] != "Hi"))
Комментарии:
1. проблема решена. Большое спасибо!