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

Работа с файлами. Спасайте) - C++

Восстановить пароль Регистрация
 
nexus_one
0 / 0 / 0
Регистрация: 13.06.2014
Сообщений: 20
13.06.2014, 01:38     Работа с файлами. Спасайте) #1
Здравствуйте, очень нужна помощь. Есть тест, занесенный в текстовый файл (2.txt) следующей структуры: строка1 - номер вопроса, строка2 - вопрос, строка3 - варианты ответа, строка4 - ввод ответа.
Я построчно его считываю. Когда доходит до считывания строки: "Введите ответ", я ввожу определённую цифру, которую нужно занести в обычный численный массив. Как это сделать?
Вот есть код, но компилятор видит ошибки.
Помогите, пожалуйста, исправить ошибки или может как-то по-другому реализовать)

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
#include <string.h>
#include <conio.h>
#include <iostream>
#include <fstream.h>
#include <cstdio>
using namespace std;
int main()
{
    int n=10;
    int otvet[n];
    int i=0;
    setlocale(LC_ALL, "rus");
    ifstream f("2.txt");
    string s,str="Введите ответ:", bufstr;
    while(!f.eof())
    {
        bufstr=" ";
        getline(f,s);
        bufstr=strtok(s,str);
        if(bufstr!=NULL)
        {
           cin>>otvet[i];
           i++;
        }
        cout<<s;
        getchar();
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 01:38     Работа с файлами. Спасайте)
Посмотрите здесь:

Работа с файлами C++
работа с файлами C++
C++ Ну спасайте!
C++ спасайте!!
Упорядочить файл, содержащий записи из двух полей (числового и текстового), в порядке возрастания числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexus_one
0 / 0 / 0
Регистрация: 13.06.2014
Сообщений: 20
13.06.2014, 01:52  [ТС]     Работа с файлами. Спасайте) #2
Ошибки выдаёт следующие:
Работа с файлами. Спасайте)
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
13.06.2014, 03:33     Работа с файлами. Спасайте) #3
nexus_one, strtok() не работает со string переменными. Надо скопировать значение string в char:
C++
1
2
3
4
5
6
getline(f, s);
char* chS = new char[s.size() + 1];
strcpy(chS, s.c_str()); //Копируем
char* p = strtok(chS, str);
if(p != NULL) {...}
delete [] chS;
nexus_one
0 / 0 / 0
Регистрация: 13.06.2014
Сообщений: 20
13.06.2014, 20:19  [ТС]     Работа с файлами. Спасайте) #4
после внесения этих изменений остаётся такая ошибка: cannot convert `std::string' to `const char*' for argument `2' to `char* strtok(char*, const char*)'

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int n=10;
    int otvet[n];
    int i=0;
    setlocale(LC_ALL, "rus");
    ifstream f("2.txt");
    string s,str="Ââåäèòå îòâåò:", bufstr;
    while(!f.eof())
    {
        bufstr=" ";
        getline(f,s);
        char* chS = new char[s.size() + 1];
        strcpy(chS, s.c_str()); //Êîïèðóåì
        char* p = strtok(chS, str);
        if(p!=NULL)
        {
           cin>>otvet[i];
           i++;
        }
        cout<<s;
        getchar();
        delete [] chS;
    }
}
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
13.06.2014, 20:35     Работа с файлами. Спасайте) #5
nexus_one, объявьте str как char
C++
1
char str[] = "Введите ответ:";
Yandex
Объявления
13.06.2014, 20:35     Работа с файлами. Спасайте)
Ответ Создать тему
Опции темы

Текущее время: 02:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru