Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/55: Рейтинг темы: голосов - 55, средняя оценка - 4.84
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788

Записать каждое слова текста в отдельную строковую переменную

25.02.2016, 20:59. Показов 10177. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую. Есть n количество слов в тексте, разделены пробелом. Как можно записать каждое слово как массив в string? То есть string[1]="мама"; string[2]="папа" и т.д.
Символы уже прочтены из файла, записаны в char
Спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2016, 20:59
Ответы с готовыми решениями:

В две строчки записать две цифры, а потом по закрытии программы и повторном открытии прочитать каждое число в отдельную переменную?
Как в с++ в две строчки записать две цифры, а потом по закрытии программы и повторном открытии прочитать каждое число в отдельную...

Удалить из текста все слова с удвоением букв и записать их в отдельную строку
Задано текст, слова в котором разделены пробелами и знаками препинания. Разработать программу, которая удаляет из этого текста все слова с...

Ввести в строковую переменную запись вещественного числа с фиксированной точкой. Дописать в ту же строковую переменную знак =
Всем пользователям форума добрый вечер! Никак не могу правильно написать код,поэтому нужна ваша помощь! Само задание: Ввести в...

9
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
25.02.2016, 21:38
Покажи код, который записывает из файла в char.
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
26.02.2016, 04:14  [ТС]
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
const char fname[]="f.txt";
int main()
{
    
    size_t count=0; //Число символов в файле
    char S; //для подсчета символов
    
    /*Просто считаем число символов*/
    ifstream f(fname);
    while (!f.eof()) 
    {
        f.get(S);
        count++;
    }
    f.close();  
    
    /*Добавляем текст в переменную*/
    
    char *S2=new char [count]; //Выделяем память по определенному числу символов
    for (int i=0;i<count;i++) S2[i]=NULL; //Очищаем строку от хлама
        ifstream f2(fname);  //создаем поток для работы с файлом
         int i=0; //курсор на текущий символ (как номер буквы в слове)
 
         while (!f2.eof()) //Проходим по файлу
         {
             f2.get(S2[i]); //Записываем символ за символом 
             i++; //передвинули курсор для записи следующего символа
         }
         
        f2.close(); //закончили работу с файлом
        cout<<S2<<endl; //Теперь переменная char[] содержит текст из файла
    delete []S2; //освобождаем память
    /**************************************/
    return 0;
}
0
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
26.02.2016, 04:26
фух, несмотря на то, что я примерно 84% ниже написанного не изучал я гугулил, как мог и написал эту фигню.
она работает, самая ЖЫЗА происходит с массивом text, я предположил, что в нем и хранится твой текст, точнее строка, потому что в коде (в "сортировочной" части) я забыл про '\n' и бла бла бла. думаю ты подкорректируешь под свои нужды, удачи разобраться в этой пурге( со строками она вроде работает нормально).
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <string>
#include <limits>
#define _CRT_SECURE_NO_WARNINGS
 
int main()
{
    std::string example;
    std::cout << "Vvedite stroku: ";
    std::getline(std::cin, example, '\n');
 
    int textLength = example.length() + 1;
 
    char *text = new char[textLength];
    strcpy(text, example.c_str());
 
    int wordCounter = 0;
 
    for (int i = 0; i < textLength; i++) {
        if ((text[i] == ' ' || text[i] == '\0') && (text[i + 1] != ' '))
            wordCounter++;
    }
 
    std::string *stringMas = new std::string[wordCounter];
    int *wordLetterCounter = new int[textLength];
    int *startPoints = new int[wordCounter];
 
    for (int i = 0, j = 0, k = 0, s = 0, g = 0; i < textLength;) {
 
        if ((i == 0) || (text[i] != ' ' && text[i - 1] == ' ')) {
            startPoints[g] = i;
            g++;
        }
 
        if (text[i] == ' ' || text[i] == '\0') {
 
            int end = i;
            int limit = std::numeric_limits<int>::max();
 
            for (int j = i; j < limit; j++) {
                int spaceCounter = 1;
                if (text[i + 1] == ' ') {
                    spaceCounter++;
                    i++;
                    continue;
                }
                break;
            }
 
            wordLetterCounter[j] = k;
 
            char *word = new char[k];
            static int m = 0;
            for (int p = startPoints[m], e = end, l = 0; p <= e; l++, p++)
                word[l] = text[p];
            stringMas[s] = word;
 
            k = -1;
            j++;
            s++;
            m++;
        }
 
        i++;
        k++;
    }
 
    std::cout << wordCounter << " slov po ";
    for (int i = 0; i < wordCounter; i++)
        std::cout << wordLetterCounter[i] << " ";
    std::cout << "bukv\n";
 
    for (int i = 0; i < wordCounter; i++) {
        stringMas[i].resize(wordLetterCounter[i]);
        stringMas[i].shrink_to_fit();
    }
 
    std::cout << "\n\nslova:\n";
    for (int i = 0; i < wordCounter; i++)
        std::cout << stringMas[i] << "\n";
 
    delete[] text, wordLetterCounter, stringMas, startPoints;
 
 
    system("pause");
    return 0;
}
0
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
26.02.2016, 04:30
приколюха подъехала
Миниатюры
Записать каждое слова текста в отдельную строковую переменную  
0
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
26.02.2016, 04:41
Хотя, со строками новыми вроде справляется, только кол-во букв и слов сломалось, но массив стринговый вроде работает, как надо.
Миниатюры
Записать каждое слова текста в отдельную строковую переменную  
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
26.02.2016, 09:55
Лучший ответ Сообщение было отмечено Aymurat как решение

Решение

Цитата Сообщение от Aymurat Посмотреть сообщение
Есть n количество слов в тексте, разделены пробелом. Как можно записать каждое слово как массив в string?
Цитата Сообщение от Aymurat Посмотреть сообщение
Символы уже прочтены из файла, записаны в char
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <sstream>
#include <iterator>
//...
    std::stringstream ss(S2);
    std::vector <std::string> vstr;
    
    std::string temp;
    // слова из строки S2 - в вектор слов
    while (ss >> temp)
        vstr.push_back(temp);
     // вывод слов из вектора
    std::copy(vstr.begin(), vstr.end(), std::ostream_iterator<string>(std::cout, "\n"));
Добавлено через 17 минут
Или так:
C++
1
2
3
4
std::vector <std::string> vstr;
std::copy(std::istream_iterator<std::string>(std::istringstream(S2)), std::istream_iterator<string>(), std::back_inserter(vstr));
 
std::copy(vstr.begin(), vstr.end(), std::ostream_iterator<string>(std::cout, "\n"));
1
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
26.02.2016, 11:11  [ТС]
nd2,
А как можно вывести 1 слово, 50 слово, 2 слово, 51 слово и так далее? Кол-во слов делится на 100 и 1 слово не более 10 символов.. Нужно как-нибудь разделить на 2 колонки
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
26.02.2016, 11:46
Цитата Сообщение от Aymurat Посмотреть сообщение
А как можно вывести 1 слово, 50 слово, 2 слово, 51 слово и так далее?
По индексу.
1
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
26.02.2016, 14:31  [ТС]
nd2, понял, глупо было задавать такой вопрос, просто цикл и использовать как массив
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.02.2016, 14:31
Помогаю со студенческими работами здесь

Каждое значение из string в кавычках в отдельную переменную - десериализация JSON
Есть такая строка: обрезал кавычки

Выделить слова из текста и каждое слово записать в соответствующий элемент массива
Задача: &quot;Дана строка. Считаем ее отрывком текста. Группы символов, разделенных одним или несколькими пробелами, назовем словом. Пробелы...

Содержимое webBrowser записать в строковую переменную
string test = &quot;https://api-content.dropbox.com/1/files/auto/cloud.txt&quot; + ...

Как записать в строковую переменную символ "
Есть строка: {{&quot;data&quot;:}} Её надо записать в переменную string вместе с символом &quot; string ss = &quot;{{&quot;data&quot;:}}&quot; //...

Как в классе записать возвращаемую строковую переменную?
как в классе записать возвращаемую строковую переменную? программа работает но ругается warning class_string.h #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru