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

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

Войти
Регистрация
Восстановить пароль
 
Salabim
0 / 0 / 1
Регистрация: 27.09.2011
Сообщений: 75
#1

Использование getline(*, *, '\'); - C++

01.06.2014, 10:22. Просмотров 273. Ответов 2
Метки нет (Все метки)

Добрый день!
Пишу простенькую программу для сравнения путей к файлам, почти закончил ее. Алгоритм готов, осталась общая отладка, во время которой вспомнил, что с использованием в getline ограничивающего символа '\' (которым разделяются каталоги в пути к файлу) у меня вышли проблемы, тогда не было времени разбираться, однако сейчас в этом я обнаруживаю необходимость.

Когда я использую '\', компилятор говорит об отсутствии закрывающей скобки и "newline в константе", очевидно, это связано с тем, что '\' используют различные символы форматирования вроде '\n' или '\t', или нулевой символ '\0', но как заставить getline работать именно с таким слешем?
Заранее благодарю.

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
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <string>
#include <fstream>
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "RUS");
 
    ifstream input("input.txt");
    string str1[100], str2[100], str_t1, str_t2;
    int count_slash_1 = 0, count_slash_2 = 0, n = 0, g_count, 
        count_of_found = 0, t_count_1 = 0, t_count_2 = 0;
 
    getline(input, str_t1);
    getline(input, str_t2);
    input.seekg(0, ios::beg);
 
    for (int i = 0; str_t1.length() > i; i++) { if (str_t1[i] == '/') { count_slash_1++; } }
    for (int i = 0; str_t2.length() > i; i++) { if (str_t2[i] == '/') { count_slash_2++; } }
 
    if (count_slash_1 > count_slash_2) { g_count = count_slash_1; }
    else { g_count = count_slash_2; }
 
    int count_for_output = g_count;
    int g_count_t_1 = g_count;
    int g_count_t_2 = g_count;
 
    while (g_count_t_1 > 0)
    {
        getline(input, str1[t_count_1], '/');
        g_count_t_1--;
        t_count_1++;
        if (g_count_t_1 == 0)
        {
            getline(input, str1[t_count_1]);
        }
    }
 
    while (g_count_t_2 > 0)
    {
        getline(input, str2[t_count_2], '/');
        g_count_t_2--;
        t_count_2++;
        if (g_count_t_2 == 0)
        {
            getline(input, str2[t_count_2]);
        }
    }
 
    int loc_count = 0;
    while (g_count > 0)
    {
        if (str1[loc_count] == str2[loc_count]) { count_of_found++; }
        else { break; }
        g_count--;
        loc_count++;
    }
 
    if (count_for_output == count_of_found)
    {
        cout << "Количество совпадающих каталогов - " << count_of_found << " из " << count_for_output << endl;
        cout << "Каталоги полностью совпадают" << endl;
    }
    else
    {
        cout << "Количество совпадающих каталогов - " << count_of_found << " из " << count_for_output << endl;
    }
 
    system("pause");
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 10:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование getline(*, *, '\'); (C++):

использование getline - C++
подскажите , как использовать функцию getline для чтения строки из файла и записи ее в двумерный массив? Добавлено через 5 минут ...

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

Отличие getline() от cin.getline() - C++
Чем отличается getline() от cin.getline() ?

Объясните разницу между "cin.getline" и "std::getline" - C++
string a; cin.getline(a); getline(cin, a);в чем разница между &quot;cin.getline(a);&quot; и &quot;getline(cin, a);&quot;

getline - C++
подскажите, в чем проблема, не работает getline, если пишу такой же код в другой программке работает, а тут нет #include&lt;iostream&gt; ...

getline() - C++
#include &lt;string&gt; #include &lt;iostream&gt; using namespace std ; int main() { string s; cout &lt;&lt; &quot;Vvedite frazu: &quot;; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6380 / 5945 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
01.06.2014, 10:43 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Его надо продублировать
C++
1
getline(input, str1[t_count_1], '\\');
и т.д. и т.п.
1
Salabim
0 / 0 / 1
Регистрация: 27.09.2011
Сообщений: 75
01.06.2014, 10:52  [ТС] #3
Благодарю покорно
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 10:52
Привет! Вот еще темы с ответами:

getline - C++
Я считываю число из входного потока, но дальше из входного потока уже не могу считать строку. Его надо очищать что ли? #include...

Getline - C++
Проблема такая: getline не хочет работать так как надо, после строки &quot;Enter the manufacturer: &quot; программа не дает ввести имя и сразу...

Getline - C++
Доброго времени суток. В чём ошибка? Пишет, что пространство имён &quot;std&quot; не содержит члена &quot;getline&quot;. while (!std::getline(file,...

Getline си++ - C++
Подскажите пожалуйста, в чем причина неправильной работы кода? while(file.getline(name_file, 4, '=')) { ...


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

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

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