2015-03-14 5 views
-2

сначала я хочу извиниться за свой английский. Я хочу создать программу, которая читает каждую строку из TXT-файла и добавляет для каждой строки @ «впереди» и «в конце». Пример: @ «Мне нравятся яблоки». Это мой код до сих пор, который заменяет «.», «?» и ":", но я не хочу этого.C++ читать строку из текстового файла и редактировать

#include <iostream.h> 
#include <fstream.h> 
#include <string.h> 
#include <values.h> 
int main() 
{ ifstream f; 
f.open("lala.txt"); 
if(!f) 
{       
    cout<<"Eroare la deschiderea fisierului!"<<endl; 

} 
char s[100],x; 
int i,n=0, k=0; 
ofstream g("adinarez.txt"); 
f.seekg(0,ios::beg); //ne pozitionam la inceputul fisierului 
while(f) 
{ 
f.get(x); 
s[k]=x; 
    n++; k++; 
} 
    f.close(); 

for (i=2; i<n-1; i++) 
if((s[i]>=65) && (s[i]<=90)) 
    { s[i-1]='\"'; 
    s[i-2]='@';} 
for(i=0;i<n;i++) 
if(s[i]=='.' || s[i]=='?' || s[i]==':' || s[i]=='\0') 
s[i+1]='\"'; 
for(i=0;i<n;i++) 
g<<s[i]; 
g.close(); 
return 0; 
} 
+0

Прежде всего, люди на этом сайте, не здесь, чтобы решить вашу домашнюю работу для вас. Но самое главное, используйте Google, прежде чем спрашивать! Основные манипуляции с строками покрываются бесчисленными учебниками и веб-сайтами по всему Интернету. – adam10603

+0

Вы должны использовать древний компилятор. Любой промежуточный компилятор даже не выходит за пределы первой строки, потому что '#include ' недействителен C++. Сначала вы должны получить современный компилятор и * затем * пересмотреть все проблемы, которые могут возникнуть. –

+0

> Сначала я хочу извиниться за свой английский. <Ваше форматирование кода - это то, что действительно причиняет нам боль. – myaut

ответ

0

Для начала, если вы обрабатываете строки ориентированного ввода, используйте std::getline для построчно чтения; не используйте std::istream::get. Кроме того, вам необходимо проверить состояние потока после прочитанного, а не . Что-то вроде while (std::getline(f, line). И line должен быть std::string, так что вам не нужно беспокоиться о переполнении. (Сортировка. Если строка содержит больше памяти, чем может выделить программа, вы столкнетесь с неотобравшимся std::bad_alloc. Но это будет много более сотни символов.) Как только у вас есть линия, вы может использовать оператор << на выходном потоке для его вывода. Наряду с все, что вы хотите вывести.

0

Если я правильно понимаю, вы предлагаете эту дорогу:

#include <iostream> 
#include <fstream> 
#include <string> 


int main() 
{ 
    std::string line; 
    std::ifstream myfile("1.txt"); 
    std::ofstream outfile("2.txt"); 

    if(myfile.is_open()) 
    { 
     while (getline(myfile,line)) 
      outfile<<"@"<<line<<std::endl; 

     myfile.close(); 
    } 
    else 
     std::cout << "Woops, couldn't open file!" << std::endl; 


    return 0; 
} 
Смежные вопросы