Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
#1

Ввод строки, содержащей несколько слов. - C++

20.12.2011, 00:09. Просмотров 1371. Ответов 9
Метки нет (Все метки)

Здравствуйте, необходимо ввести строку, содержащую несколько слов из файла. Вот мой вариант:
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 "stdafx.h"
#include "conio.h"
#include "string"
#include "iostream"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    struct slovo
    {
        string sl;
    };
    slovo mas[20];
    int i=0;
    string a,b,c;
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    do 
    {
        cin>>mas[i].sl;
        i++;
    } while(cin>>mas[i].sl);
    a="";
    for(int k=0;k<i;k++) a=a+mas[k].sl;
    cout<<a;
    return 0;
}
Исходный файл содержит строку: Hello, world! Let it snow!
Выходной файл: Hello,Letsnow!

Как видно, слова "world!" и "it" исчезли. Что не так?

Добавлено через 12 минут
Строки я склеиваю специально: a=a+mas[k].sl
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2011, 00:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод строки, содержащей несколько слов. (C++):

В строке, содержащей несколько слов, разделенных пробелом, переставить слова в обратной последовательности - C++
Задание 1 В строке, содержащей несколько слов, разделенных пробелом, переставить слова в обратной последовательности. Входные...

Не вводятся строки содержащие несколько слов - C++
Подскажите вот ввожу текст так &quot;Привет&quot;, всё норм а когда ввожу типа &quot;Привет всё норм&quot; через пробел получается на скрине, как исправить,...

Ввод/вывод строки с подсчетом количества слов - C++
Ввести строку, вывести ее на экран и посчитать кол-во слов в строке. Пожалуйста, нужно в скором времени.

В динамической матрице целых чисел добавить строки после строки, содержащей простое число - C++
Помогите написать или хотя бы дайте пару подсказок В двумерном массиве целых чисел добавить строки после строки, содержащей простое...

В двумерном массиве целых чисел добавить строки после строки, содержащей простое число - C++
В двумерном массиве целых чисел добавить строки после строки, содержащей простое число. Новая строка будет заполняться этим простым числом....

Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов - C++
мне нужна функция, которая во входе получает строку слов и рзделителей (&quot; &quot;, &quot;,&quot;, &quot;.&quot;, &quot;_&quot;, &quot;&quot;&quot;), а на выходе имеет массив слов из строки...

9
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.12.2011, 00:12 #2
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Что не так?
все...начиная с того что намешан Си и С++ и заканчивая неправильными настройками опций проекта
0
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
20.12.2011, 00:13 #3
BoBaH26, http://www.cplusplus.com/reference/string/getline/
1
BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
20.12.2011, 00:23  [ТС] #4
easybudda, спасибо, посмотрю, но хотелось бы мой способ понять, как сделать условие, в зависимости от выполнения которого будет выполняться или не выполняться мой цикл.
Jupiter, а что собственно намешано? Просто я недавно С++ изучать начал. Можешь написать, что относится к С, а что к С++?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.12.2011, 00:31 #5
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 "stdafx.h" //при создании проекта нужно ставить галку "Пустой проект"
#include "conio.h" //эта приблуда и ни Си и не С++, а черт знает что
#include "string" //стандартные хедеры подключают так:  #include <string>
#include "iostream" //аналогично #include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[]) //здесь эти аргументы main не нужны
{
    struct slovo
        {
                string sl; // string - это С++
        };
        slovo mas[20];
    int i = 0;
    string a,b,c;
//    freopen("input.txt","r",stdin);  - это функция Си
//    freopen("output.txt","w",stdout); - аналогично
        do 
        {
                cin>>mas[i].sl; //а тут уже используешь С++
                i++;
        } while(cin>>mas[i].sl);
        a="";
        for(int k=0;k<i;k++) a=a+mas[k].sl; //цикл в стиле С++
        cout<<a;//тоже С++
        return 0;
}
1
BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
20.12.2011, 00:38  [ТС] #6
Спасибо. Все-таки С++ больше, чем С. А пишу в Microsoft Visual Studio 2010, отсюда и лишние аргументы в main(). #include "stdafx.h" - стандартна, пишется сама при создании нового проекта.
#include "conio.h" - позволяет использовать _getch(), чтобы ждать нажатия клавиши. Согласен, вместо нее лучше использовать endl. Пишу "" вместо <>, т.к. учили так, но знаю, что оба рабочие. Кроме freopen("input.txt","r",stdin); еще не знаю, как по-другому открывать поток для считывания и записи в файл.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.12.2011, 00:45 #7
Цитата Сообщение от BoBaH26 Посмотреть сообщение
#include "stdafx.h" - стандартна, пишется сама при создании нового проекта.
вы не правильно создаете проект, надо ставить галочку пустой проект

Цитата Сообщение от BoBaH26 Посмотреть сообщение
#include "conio.h" - позволяет использовать _getch()
вместо этого используй
C++
1
2
#include <cstdio>
std::getchar();
или
C++
1
2
#include <iostream>
std::cin.get();
или
C++
1
2
#include <cstdlib>
std::system("pause");
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Пишу "" вместо <>, т.к. учили так, но знаю, что оба рабочие.
вас неправильно учили, "" - используют для собственных хедер файлов - которые написали вы/ваш брат, сват.../одногрупник, <> - используют для стандратных хедер файлов, которые вы найдете везде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//построчно читает текст файла, выводит его на экран и записывает в файл
#include <string>
#include <fstream>
#include <iostream>
 
int main()
{
    std::string str;
    std::ifstream in("input.txt");
    std::ofstream out("output.txt");
    
    while (std::getline(in, str))
    {
        out << str;
        std::cout << str;
    }
 
    std::cin.get();
}
1
BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
20.12.2011, 01:17  [ТС] #8
А какая функция есть в С++ для нахождения символа в строке? Строка задается как string, а не как char <name>[<kol-vo>]. Например, надо найти в строке b="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; i-й символ строки a. Делаю так:
Код C++
1
b.find(a.at(i))
Но работает неправильно.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.12.2011, 01:21 #9
Цитата Сообщение от BoBaH26 Посмотреть сообщение
неправильно.
неправильно в вашем понимании это как?
0
BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
20.12.2011, 01:52  [ТС] #10
Ну вот в этом цикле:
C++
1
2
3
4
5
6
7
for (int k=0;k<a.length();k++) 
    {
        if (b.find(a.at(k)))
            kolb++;
        if (c.find(a.at(k)))
            kolm++;
    }
kolb = 29, kolm = 30 в итоге.

Добавлено через 2 минуты
Строка а: Hello,world!Letitsnow!NewYear!
kolb - кол-во больших, kolm - кол-во маленьких.
b="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
c="abcdefghijklmnopqrstuvwxyz";

Добавлено через 25 минут
Ну так что делать?
0
20.12.2011, 01:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2011, 01:52
Привет! Вот еще темы с ответами:

Вычислить значение величины,содержащей несколько однотипных сум. Для вычисления сумм написать функцию пользователя - C++
Помогите с кодом пожалуйста #include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; double summa(int k, int m, int a, int b ,...

Ввод слов в массив и подсчёт введённых слов - C++
как можно решить эту задачу:Напишите программу,использующую массив char и цикл для чтения по одному слову за раз до тех пор,пока не будет...

Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) - C++
Написать программу, в которой с клавиатуры вводится строка символов. Подсчитать количество слов в строке, при условии, что в качестве...

Анализ строки содержащей арифметическое выражение - C++
Написать программу, которая использует класс string для анализа строки, содержащей математическое выражение, например, вида (2+3)*4+1....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru