Форум программистов, компьютерный форум CyberForum.ru

Передача текста из EditBox в файл txt (иероглифы) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевод кода програми из С++ в С http://www.cyberforum.ru/cpp-beginners/thread696759.html
Помогите, пожалуйста перевести из С++ в С //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <iostream> #include<time.h> #include <math.h> //---------------------------------------------------------------------------
C++ Структуры. Посчитать количество кубиков каждого цвета Надо ввести информацию о кубиках(цвет) и посчитать сколько есть кубиков каждого цвета. Написал код, но вместо количества выводит 0.#include <iostream> #include <stdio.h> #include <conio.h> const int m=7; using namespace std; struct cub { int size; char color; char material; http://www.cyberforum.ru/cpp-beginners/thread696757.html
C++ Как создать файл по двоичному коду и извлечение двоичного кода файла
Вот в чем вопрос: Нужно, чтобы программа из файла text.txt (он с программой рядом лежит) взяла все(а там код двоичный), и записала это в переменную. И потом создала (в той же папке где и .exe), по этому коду некий файл, с названием, который тоже закодирован... Я спрашиваю у вас вот что: 1) Как считать, информацию из text.txt, при этом сохранив все это в переменную X... Трудность в том, что...
Циклический алгоритм. не могу найти ошибку C++
Всем доброго времени суток, нуждаюсь в ващей помощи.. есть задание вот мой код:#include<iostream.h> #include<math.h> #include<iomanip.h> #include<fstream.h> double F(double a_a, double a_x) { double Z;
C++ Re: Жадный алгоритм для определения последовательности обхода городов http://www.cyberforum.ru/cpp-beginners/thread696744.html
Мне нужно решить задачу коммивояжера с помощью жадного алгоритма. Построить приближенное решение TOUR со стоимостью COST для задачи коммивояжера с N с городами и матрицей стоимости С, начиная с вершины U (найти минимальную стоимость пути.) Буду благодарен за помощь.
C++ Написать функцию, вычисления расстояния от точки до контура Нужно написать функцию, которая бы вычисляла расстояние от точки до контура и возвращала бы его. Спасибо. подробнее

Показать сообщение отдельно
Izual
 Аватар для Izual
93 / 118 / 6
Регистрация: 13.11.2012
Сообщений: 1,517
13.11.2012, 21:04     Передача текста из EditBox в файл txt (иероглифы)
Здравствуйте уважаемые программисты, нужна помощь.
В ниже приведённом коде у меня возникли 2 проблемы:
1.В файл заносится только первые символы трёх строк(string)
2.В MessageBox я вызываю проверку слова в строке, на что мне показан первый правильный символ и куча иероглифов.

Объявление в глобальных переменных:
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct base
{
    string name;
    string work;
    string year;
};
base *array;
base *arrayn;
fstream in("example.txt");
int nl=1;
int nc=0;
string line;
В функции Main:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
if (!(in.is_open()))
    {
        MessageBox(hWnd, _T("Файл с информацией не найден"), szTitle, MB_OK);
        return 0;
    }
    char cf;
    while (!in.eof())
    {
        in.get(cf);
        if (cf == '\n')
        nl++;
    }
    in.clear();
    in.seekg(0);
    char cd[5]="";
    itoa(nl,cd,10);
    MessageBox(hWnd, (LPCWSTR)cd, _T("Количество строк в файле:"), MB_OK);
    array=new base[nl];
    int kc; // длина строки
    int kp; // кол-во пробелов в строке
    int it[2];
    while (in.good())
    {
        getline (in,line);
        kc = line.size();
        kp = 0;
        for(int i=0;i<kc;i++)
        {
            if(line[i] == ' ')
            {
                kp++;
                if (kp==1)
                    it[0]=i;
                if (kp==2)
                    it[1]=i;
            }
        }
        array[nc].name = line.substr(0, it[0]);
        array[nc].work = line.substr(it[0]+1, it[1]-it[0]-1);
        array[nc].year = line.substr(it[1]+1);
        nc++;
    }
    in.clear();
    in.seekg(0);
Далее в WndProc я объявляю переменные:
C++
1
2
3
string s1;
    string s2;
    string s3;
Здесь я после нажатия кнопки должен получить три строки и если строка не пуста, то выполнить код вставки в конец файла новых данных.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
case ID_BUTTON1:
            {
                GetDlgItemText(hWnd, ID_EDIT, (LPWSTR)s1.c_str(), sizeof(s1));
                GetDlgItemText(hWnd, ID_EDIT1, (LPWSTR)s2.c_str(), sizeof(s2));
                GetDlgItemText(hWnd, ID_EDIT2, (LPWSTR)s3.c_str(), sizeof(s3));
 
                if ( (s1.data()!=0) && (s2.data()!=0) && (s3.data()!=0) ) // - Не работает проверка на пустоту.
                {
//тут объявляется новый динамический массив с +1 символом, старые данные копируются в новый массив.
                    arrayn=new base[nl+1];
                    for (int i=0;i<nl;i++)
                    {
                        arrayn[i].name=array[i].name;
                        arrayn[i].work=array[i].work;
                        arrayn[i].year=array[i].year;
                    }
//тут добавляется новая переменная в структуру
                    arrayn[nl].name = s1.data();
                    arrayn[nl].work = s2.data();
                    arrayn[nl].year = s3.data();
 
                    in.seekg(0,ios::end);
                    in << endl << arrayn[nl].name.c_str() << " " << arrayn[nl].work.c_str() << " " << arrayn[nl].year.c_str();
                    delete[] array;
                    array = arrayn;
                    in.clear();
                    in.seekg(0);
                    MessageBox(hWnd, (LPCWSTR)arrayn[nl].name.c_str(), _T(""), MB_OK);
nl++;
                }
                else
                    MessageBox(hWnd, _T("Вы не ввели какой то элемент."), szTitle, MB_OK);
 
            }
Добавлено через 20 минут
Ой не написал где ошибка именно, а она видимо в копировании информации из EditBoxa (это последняя часть кода).
И кстати, если добавляю переменную таким способом:
C++
1
2
3
                    lstrcpy((LPWSTR)arrayn[nl].name.c_str(), (LPWSTR)s1.c_str());
                    lstrcpy((LPWSTR)arrayn[nl].work.c_str(), (LPWSTR)s2.c_str());
                    lstrcpy((LPWSTR)arrayn[nl].year.c_str(), (LPWSTR)s3.c_str());
то MessageBox правильно выводит поле .name
Но ошибка с записью в файл остаётся,.. уже второй день мучаюсь, помогите пожалста )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru