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

размер считываемой строки из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Калькулятор и стек http://www.cyberforum.ru/cpp-beginners/thread980842.html
Решил опробовать себя в С++. В Visual Studio C++ решил сделать мини калькулятор, который выполняет подсчет через стек. Причем парсит скобки дабы в них подсчитать в начале и только потом подсчитать все остальное. Реально реализовать такое? Подскажите, в какую сторону копать в плане стека и регулярки для скобок. Буду очень благодарен!
C++ Сортировка двоичным включением У меня задание продемонстрировать в виде таблицы алгоритм роботы сортировки с двоичным включением на массиве 15,4,10,8,6,9,16,1.Написал программу,н оона раюотает неправильно.В чём ошибка? #include <iostream> #include <conio.h> using namespace std; void main() { int i,j,a,n,l,z,m,S,t,k; cout<<"Input n"; cin>>n; http://www.cyberforum.ru/cpp-beginners/thread980829.html
параллельное программирование C++
Подскажите, пожалуйста! Возвожу положительные числа в степень, а выдается отрицательный результат. Как быть? #include <iostream> #include <stdio.h> #include <stdlib.h> #include <mpi.h> using namespace std;
C++ Рандомизация ответов
Возникли некоторые проблемы, не знаю как сделать рандом ответов в тестирование, да так чтобы не потерять правильный ответ. Буду очень рад примерам.
C++ Что здесь не так? http://www.cyberforum.ru/cpp-beginners/thread980809.html
Только начал изучать С++. Решил написать программу которая гласит что число больше или меньше ста и парное оно или непарное. За код строго не судите(только учусь)! Компилятор-MS Visual C++ Express 2010#include<iostream> #include<math.h> using namespace std; int main() { setlocale(LC_ALL, "russian"); int peremenaya; cin>>peremenaya; int a=peremenaya/2; if (peremenaya<100) {
C++ Не открыть файл! 2 месяца назад все работало... Сейчас при отладке доходит до открытия файла на чтение и вылетает... Права доступа открыл какие только есть... С путями, кажется(?), все нормально... Дайте намек, как разгадать эту загадку. подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
7185 / 4351 / 634
Регистрация: 29.11.2010
Сообщений: 11,843
19.10.2013, 00:24     размер считываемой строки из файла
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <fstream>
#include <cstring>
 
// функция удаляет первые буквы у каждого слова в строке
void delFirstChars(char *str)
{
    // выделяем память под временный массив
    char* tmp = new char[strlen(str) + 1];
    // индекс сдвига по результирующему массиву
    unsigned int index = 0;
    // копируем во временный массив строки без первых букв слов
    for (int i=1; i < strlen(str); i++)
    {
        // если предыдущий символ - пробел и текущий им не является, пропускаем
        if (str[i-1] == ' ' && str[i] != ' ')
            continue;
        // иначе записываем новую букву в строку
        tmp[index++] = str[i];
    }
 
    strcpy(str, tmp);  // копируем полученный временный массив в исходный
    str[index] = '\0'; // устанавливаем конец строки
    // освобождаем память
    delete[] tmp;
}
 
 
int main()
{
    std::ifstream ifs("input.txt");
    if (!ifs) return 1;
    char** words = nullptr;  // массив строк
    const int size = 256;    // длина вспомогательного массива
    char tmp[size];          // вспомогательный массив
    int counter = 0;         // счетчик количества строк
 
    // узнаем количество строк
    while (ifs.getline(tmp, sizeof(tmp)))
        counter++;
    // выделяем память под строки
    words = new char*[counter];
 
    // сбрасываем флаг ошибок (EOF) и устанавливаем считывание в начало файла
    ifs.clear();
    ifs.seekg(0);
 
    for (int i=0; i < counter && !ifs.eof(); i++)
    {
        // считываем во временный массив
        ifs.getline(tmp, sizeof(tmp));
        // выделяем память под массив символов, равный длине временного + 1
        words[i] = new char[strlen(tmp) + 1];
        // копируем значение из временного массива в текущую строку
        strcpy(words[i], tmp);
        // выводим строку на экран
        std::cout << words[i] << std::endl;
        // удаляем первые буквы у слов
        delFirstChars(words[i]);
    }
 
    std::cout << "\nAfter deleting first character in each word:\n";
    // выводим результат на экран и освобождаем память
    for (int i=0; i < counter; i++)
    {
        std::cout << words[i] << std::endl;
        delete[] words[i];
    }
    delete[] words;
}
С std::string, а также с std::istringstream выглядело бы намного проще, но он может пробелы зажевать.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru