Считать строку из файла, посчитать кол-во символов и "присвоить" ее классу исходя из кол-ва символов. С++
Есть файл .txt в нем строки типа
1-я строка: 1) "какой-то текст" 2) какой-то текст 3)...
2-я строка: 1) "какой-то текст" 2) какой-то текст 3)...
Как присвоить строку классу исходя из кол-ва символов в строке? Например строка из 100 символов присваивается классу Stosimb. Это весь код, который смог написать.
p.s. Компилируемый код.
#include <string>
#include <fstream>
#include <Windows.h>
#include <cstring>
using namespace std;
/*class Msg
{
Public:
Msg(){}
Msg(string ms)
{
this->ms = ms;
}
void Print()
{cout << ms << endl; }
char ms;
}*/
int main()
{
//ifstream fin;
fstream fs;
fs.open("myfile.txt", fstream::in | fstream::app);
while(!fs.eof())
for (int i = 0; i < 2; i++)
{
string msg;
SetConsoleOutputCP(1251);
getline(fs, msg);
cout << msg << " ";
cout << msg.length() << " characters\n";
/*while(fin.read((char*)&msg, sizeof(Msg)))
{
ms.Print();
}*/
}
fs.close();
//ifs.close();
}
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
Учитывая все вышесказанное в комментариях, сделаем простой пример.
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
class Msg
{
public:
Msg(){}
Msg(string ms) :m_ms{ms} {}
void Print() {
cout << m_ms << endl;
}
private:
string m_ms;
};
int main()
{
fstream fs("file");
if (!fs) {
cout << "ups\n"; // если файл не открылся, нужно бежать
return 1;
}
string msg;
while(getline(fs, msg)) // если строк нет, тут будет false и цикл завершится
{
if (msg.length() > 10) { // эта строка избрана, она достаточно длинная
Msg m(msg); // "передадим классу строку" (да, звучит некорректно)
m.Print(); // что то сделаем, напечатаем
}
}
}
Будут уточнения в условии, будут уточнения в коде.