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

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

Восстановить пароль Регистрация
 
Salabim
0 / 0 / 1
Регистрация: 27.09.2011
Сообщений: 74
01.06.2014, 10:22     Использование getline(*, *, '\'); #1
Добрый день!
Пишу простенькую программу для сравнения путей к файлам, почти закончил ее. Алгоритм готов, осталась общая отладка, во время которой вспомнил, что с использованием в 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");
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 10:22     Использование getline(*, *, '\');
Посмотрите здесь:

использование getline C++
getline C++
getline C++
getline C++
Getline C++
Использование оператора cin.getline C++
getline() C++
Отличие getline() от cin.getline() C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
01.06.2014, 10:43     Использование getline(*, *, '\'); #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Его надо продублировать
C++
1
getline(input, str1[t_count_1], '\\');
и т.д. и т.п.
Salabim
0 / 0 / 1
Регистрация: 27.09.2011
Сообщений: 74
01.06.2014, 10:52  [ТС]     Использование getline(*, *, '\'); #3
Благодарю покорно
Yandex
Объявления
01.06.2014, 10:52     Использование getline(*, *, '\');
Ответ Создать тему
Опции темы

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