Дан файл вида: слово1 слово2 слово3 и тд Необходимо написать программу, которая берет каждое слово из файла и соединяет с другим словом, например «тест:», и выводит в файл результат: тест:слово1 тест:слово2 тест:слово3 Сам мучился но ничего не вышло((( вот мой исходник(нерабочий, создан для 2 строчек в файле) поправьте что не так, или напишите свой вариант решения данной задачи(под ДОС, не на визуале!!!). Code: #include <iostream.h> #include <fstream.h> #include <string.h> void main() { ofstream book_file("123.txt"); ifstream input_file("123.txt"); char one[64], two[64], stroka1 [128]; input_file.getline(one, sizeof(one)) ; input_file.getline(two, sizeof(two)); cout << one << endl; cout << two << endl; cout<<"vvedite slovo: "; cin.getline(stroka1,64); book_file<< strcat(stroka1 ,one)<<strcat(stroka1 ,two); }
Мой код неработает, я знаю что нужно сделать цикл чтоб было для всех строк, но код неправельный. 2 nc.STRIEM Я не силен в си, мож ты напишешь пример или кто-нибудь хотябы))
Code: #include <string> #include <vector> #include <fstream> #include <sstream> #include <functional> #include <algorithm> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { std::vector<std::string> buf; { std::ifstream f("123.txt"); std::copy(std::istream_iterator<std::string>(f),std::istream_iterator<std::string>(),std::back_inserter(buf)); } std::ofstream f("123.txt"); std::transform(buf.begin(),buf.end(), std::ostream_iterator<std::string>(f, "\n"), std::bind1st(std::plus<std::string>(), "тест:") ); return 0; }
2 sni4ok 1) Неработает))) 2) Мне кажется можно сделать гараздо проще. Ты там слишком все накрутил по-моему.
всё работает, обьясняю по пунктам создай файл 123.txt, напиши в него слово1 слово2 слово3 сохрани, закрой, проверь что запускаешь из тойже дириктории(можешь кстати пути на жёсткую ссылку сделать, типа c:\123.txt, вообщем запускаешь эту бадягу, после выполнения в том же файле будет следующее: тест:слово1 тест:слово2 тест:слово3 к вопросу насчёт того что накрутил- ты не прав, у меня вызывается 2 стандартных алгоритма.. куда может быть проще?
Компилю я в Borland C++ и он мне выдает 7 ошибок: 6 из которых ссылаются на то что не может открыть инклудовские файлы и еще ошибка в using namespace std;
ну значит компилятор у тя древний, поставь последнюю версию... кто же виноват, что у тя компилятор самые основные вещи не поддерживает? з.ы - единственное место в приведённом коде не соотвествующие стандарту- это название функции для точки входа, если её заменить например на int main(int, char**), то приведённый код будет 100% коретным в любом плюсовом компиляторе, поддерживающим хотябы стандарт 98 года.
итак ты говорил считаем колличество инклудов Code: #include <string> #include <vector> #include <fstream> #include <sstream> #include <functional> #include <algorithm> и вправду их 6, заметь, что если ни один инклуд не подгрузится то и std нэймспэйсу неоткуда будет взяться, курим стандарт, а именно главу 17.4.1.2 Headers, в ней смотрим на таблицу под названием "Table 11—C++ Library Headers" Code: <algorithm> <iomanip> <list> <queue> <streambuf> <bitset> <ios> <locale> <set> <string> <complex> <iosfwd> <map> <sstream> <typeinfo> <deque> <iostream> <memory> <stack> <utility> <exception> <istream> <new> <stdexcept> <valarray> <fstream> <iterator> <numeric> <strstream> <vector> <functional> <limits> <ostream> ________________________________________________________________________ видим, что все 6 вышеуказанных хедеров есть в этом списке, "-" тебе за твёрдолобость.
виноват ты, потому что несешь бред полный. using namespace std никогда не скомпилиурется без хидеров, а они у него не подключены
мой вариант: Code: #include <stdio.h> #include <fstream> using namespace std; void main(void) { FILE *f; f=fopen("1.txt","r"); ofstream ofs("2.txt"); char byf[128],w[]="слово:"; int i=0; while(1) { byf[i]=fgetc(f); if(byf[i]==EOF) break; if(byf[i]=='\n') { ofs<<w; for(int j=0;j<i;j++) ofs<<byf[j]; ofs<<endl; i=0; continue; } i++; } }
что такое mv6? приведённый мой код будет как минимум работать под msvc7.0 и выше, gcc, cometau, intel ну и думаю большинство других.
Ничуть. Это стандарт. По стандарту все, что ты подключаешь через <fstream>, <iostream> и прочие находится в пространстве имен std. Так что либо пиши std:fstream output_file;, либо пиши в начале using namespace std.