Как записать строку string в файл?

173
02 марта 2018, 17:44
#include <iterator>
#include <sstream>
#include <string>
#include <conio.h>
#include <fstream>
int main()
{
    std::string str;
    std::ifstream in("D:\\laba13.txt");
    std::ofstream f("D:\\laba130.txt");
    std::getline(in, str);
    std::istringstream ist(str);
    std::string word;
    while (ist >> word) 
    {
        const char lastCh = word.back();
        std::remove_copy(word.begin(), word.end(), std::ostream_iterator<char>(std::cout), lastCh);
        std::cout << lastCh << " ";
    }
    _getch();
}

Программа удаляет предыдущие вхождения последней буквы в словах. Я считываю строку из файла, это мне сделать удалось, но записать результат в другой файл у меня не выходит. Нужно, чтобы результат шел в файл, а не на консоль. Нужно как-то заменить std::cout?? Заранее спасибо за любую помощь.

Answer 1

Так на g++ 7.1 все работает. Абсолютные пути к файлам намертво вклеивать в программу не очень хорошо, поэтому я их поменял на относительные. И просто добавил копию Вашего вывода на экран для файла.

#include <algorithm>
#include <iterator>
#include <sstream>
#include <string>
#include <conio.h>
#include <fstream>
#include <iostream>
int main()
{
    std::string str;
    std::ifstream in("laba13.txt");
    std::ofstream f("laba130.txt");
    std::getline(in, str);
    std::istringstream ist(str);
    std::string word;
    while (ist >> word) 
    {
        const char lastCh = word.back();
        std::remove_copy(word.begin(), word.end(), std::ostream_iterator<char>(std::cout), lastCh);
        std::remove_copy(word.begin(), word.end(), std::ostream_iterator<char>(f), lastCh);
        std::cout << lastCh << " ";
        f << lastCh << " ";
    }
    _getch();
}
Answer 2

Если закрыть файл, то работает(код проверил):

#include <algorithm>
#include <iterator>
#include <sstream>
#include <string>
#include <fstream>
#include <iostream>
int main()
{
    std::string str;
    std::ifstream in("laba13.txt");
    std::ofstream f("laba130.txt");
    std::getline(in, str);
    std::istringstream ist(str);
    std::string word;
    while (ist >> word)
    {
        const char lastCh = word.back();
        std::remove_copy(word.begin(), word.end(), std::ostream_iterator<char>(std::cout), lastCh);
        std::remove_copy(word.begin(), word.end(), std::ostream_iterator<char>(f), lastCh);
        std::cout << lastCh << " ";
        f << lastCh << " ";
    }
    f.close(); // важно!
    in.close();
    std::cin.get();
}
READ ALSO
Проблемы с матрицей.

Проблемы с матрицей.

И снова возможно глупые вопросыНужно посчитать определитель матрици через её триангуляцию(приведение к треугольному виду)

148
С++ Что означает запись: float (*func4(double)(void))[10];?

С++ Что означает запись: float (*func4(double)(void))[10];?

Есть такая строка кода: float (*func4(double)(void))[10];Не могу понять, что это такое

170
Подключение графического интерфейса

Подключение графического интерфейса

Начал делать масштабный проект через консольное приложение, с мыслью «вот сейчас наберусь опыта в кодописании, а потом просто подключу интерфейс,...

154