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

Вывод в одну строку - C++

Восстановить пароль Регистрация
 
denvasden
4 / 4 / 0
Регистрация: 25.10.2012
Сообщений: 104
11.02.2013, 18:23     Вывод в одну строку #1
Добрый день!
Господа, помогите новичку!

Есть вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using namespace std;
 
int main()
{
    string line;
    vector<string> v;
    ifstream in("file.txt");
 
    while(getline(in, line))
    {
        v.push_back(line);
    }
    for(int i = 0; i < v.size(); i++)
    {
        cout << i << ": " << v[i] << endl;
    }
}
Нужно, чтобы перед выводом все элементы вектора объединились в одну строку.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 18:28     Вывод в одну строку #2
Цитата Сообщение от denvasden Посмотреть сообщение
Нужно, чтобы перед выводом все элементы вектора объединились в одну строку.
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
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using namespace std;
 
int main()
{
    string line, conc_line;
    vector<string> v;
    ifstream in("file.txt");
 
    while(getline(in, line))
    {
        v.push_back(line);
        conc_line += line + ' ';
    }
 
    cout << conc_line << endl; // вывод всех строк
 
    for(int i = 0; i < v.size(); i++)
    {
        cout << i << ": " << v[i] << endl;
    }
}
denvasden
4 / 4 / 0
Регистрация: 25.10.2012
Сообщений: 104
11.02.2013, 18:38  [ТС]     Вывод в одну строку #3
Ev[G]eN, какая?
xtorne21st, ваш код срабатывает не так как нужно(
Это задание из книжки, которые обычно бывают по завершению главы. Большую часть сделал, а тут что то затупил.
Мне почему то казалось, что манипуляции должны быть проделаны в цикле.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 19:57     Вывод в одну строку #4
Цитата Сообщение от denvasden Посмотреть сообщение
Мне почему то казалось, что манипуляции должны быть проделаны в цикле.
Он и так в цикле, если начальный код работает верно, этот тоже будет верно работать, справедливо и обратное.

Добавлено через 29 минут
Если у вас в задании просто прочитать с файла строки и вывести результат в одной строке, то вектор тут на нужен:
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
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
 
int main()
{
    std::string file_name, line, conc_line;
 
    std::cout << "Put file name: ";
    std::cin >> file_name;
 
    std::ifstream in(file_name.c_str());
    if (!in) {
        std::cerr << "Error: couldn't read file '" << file_name << "'\n";
        exit(1);
    }
 
    while (!in.eof()) {
        std::getline(in, line);
        conc_line += line + "; ";
    }
 
    in.close();
 
    std::cout << conc_line << std::endl;
 
    return 0;
}
denvasden
4 / 4 / 0
Регистрация: 25.10.2012
Сообщений: 104
11.02.2013, 20:09  [ТС]     Вывод в одну строку #5
Цитата Сообщение от xtorne21st Посмотреть сообщение
Он и так в цикле, если начальный код работает верно, этот тоже будет верно работать, справедливо и обратное.
Про то, что и так в цикле это верно помечено. (я имел в виду for)
Начальный код работал.
Векторы используются, чтобы попрактиковаться с ними.

Спасибо за помощь.(хотя для новичка сложновато было понять все, что было изложено во втором листинге кода)

А почему вы используете такого рода объявление/определение.
Цитата Сообщение от xtorne21st Посмотреть сообщение
std::string file_name, line, conc_line;
почему std:: ?
почему не используете пространство имен?
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
11.02.2013, 20:37     Вывод в одну строку #6
Цитата Сообщение от denvasden Посмотреть сообщение
Добрый день!
Господа, помогите новичку!

Есть вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using namespace std;
 
int main()
{
    string line;
    vector<string> v;
    ifstream in("file.txt");
 
    while(getline(in, line))
    {
        v.push_back(line);
    }
    for(int i = 0; i < v.size(); i++)
    {
        cout << i << ": " << v[i] << endl;
    }
}
Нужно, чтобы перед выводом все элементы вектора объединились в одну строку.
у std::string есть такой метод, как append
C++
1
2
3
4
5
6
string long_string;
for(int i=0; i<v.size(); i++)
{
    str.append(' ');
    str.append(v[i]);
}
Добавлено через 3 минуты
Цитата Сообщение от denvasden Посмотреть сообщение
почему std:: ?
почему не используете пространство имен?
как раз не использование всего неймспейса является хорошим тоном. зачем цеплять весь std, когда используется только cin cout string vector - это 1\100 от всего данного неймспейса
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 20:51     Вывод в одну строку #7
Цитата Сообщение от Tiva Посмотреть сообщение
как раз не использование всего неймспейса является хорошим тоном
К томуже это даёт чётко понять к чему именно принадлежит данный объект (в данном случаи объекты библиотеки принадлежат стандартному пространству имён). Как-то так
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 20:53     Вывод в одну строку
Еще ссылки по теме:

Вывод текста и указателя в одну строку C++
Оператор cin в одну строку C++
Вывод нескольких найденных значений в одну строку C++

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

Или воспользуйтесь поиском по форуму:
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
11.02.2013, 20:53     Вывод в одну строку #8
Цитата Сообщение от xtorne21st Посмотреть сообщение
К томуже это даёт чётко понять к чему именно принадлежит данный объект (в данном случаи объекты библиотеки принадлежат стандартному пространству имён). Как-то так
угу, особенно попробуйте почитать\написать код с использованием boost, например буст тред и буст азио(практически всегда вместе используется), и использовать какие-либо контейнеры из std
да в коде запутать как делать нефиг если не видно пространства
Yandex
Объявления
11.02.2013, 20:53     Вывод в одну строку
Ответ Создать тему
Опции темы

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