Jump to content
Che

[C++][AJUTOR] error C2679: binary '>>' : no operator found

Recommended Posts

Posted

Am codul asta:


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <regex>
#include <fstream>
#include <string>

using namespace std;

string delSpaces(string &str)
{
str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
return str;
}

int main()
{
string line;

ifstream myfile;

myfile.open("data.txt");
if (myfile.is_open())
{


while (getline(myfile, line))
{

delSpaces(line);
ifstream secondfile;
//deschide fisierul pentru a scrie, fara verificari etc.
secondfile.open("second.txt");
secondfile >> "LINE:" >> line >> "\n";
//cout << "User name:" << line << '\n';
}
myfile.close();
}
else{
cout << "Unable to open file.\n";
exit(EXIT_FAILURE);
}
system("PAUSE");
return 0;
}

Programul ar trebui sa deschida un fisier data.txt si sa il citeasca si apoi sa scrie fiecare linie citita intr-un alt fisier second.txt. Fisierul data.txt contine ceva, fisierul second.txt este gol. In final, second.txt si data.txt vor fi identice, avand acelasi continut (exceptand faptul ca second va avea in dreptul fiecarei linii scris cuvantul "LINE:" si ca liniile vor fi fara space.

Problema e ca nu mi se compileaza. Imi da eroarea asta:

error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const char [6]' (or there is no acceptable conversion)

Am cautat pe net si vad ca toti spun ca trebuie inclus #include <string>. Chestia e ca la mine e deja inclus si tot primesc eroarea asta. Care sa fie problema ?

Multumesc !

Posted
Am codul asta:


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <regex>
#include <fstream>
#include <string>

using namespace std;

string delSpaces(string &str)
{
str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
return str;
}

int main()
{
string line;

ifstream myfile;

myfile.open("data.txt");
if (myfile.is_open())
{


while (getline(myfile, line))
{

delSpaces(line);
ifstream secondfile;
//deschide fisierul pentru a scrie, fara verificari etc.
secondfile.open("second.txt");
secondfile >> "LINE:" >> line >> "\n";
//cout << "User name:" << line << '\n';
}
myfile.close();
}
else{
cout << "Unable to open file.\n";
exit(EXIT_FAILURE);
}
system("PAUSE");
return 0;
}

Programul ar trebui sa deschida un fisier data.txt si sa il citeasca si apoi sa scrie fiecare linie citita intr-un alt fisier second.txt. Fisierul data.txt contine ceva, fisierul second.txt este gol. In final, second.txt si data.txt vor fi identice, avand acelasi continut (exceptand faptul ca second va avea in dreptul fiecarei linii scris cuvantul "LINE:" si ca liniile vor fi fara space.

Problema e ca nu mi se compileaza. Imi da eroarea asta:

error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const char [6]' (or there is no acceptable conversion)

Am cautat pe net si vad ca toti spun ca trebuie inclus #include <string>. Chestia e ca la mine e deja inclus si tot primesc eroarea asta. Care sa fie problema ?

Multumesc !

Nu este bun? „direc?ia”. Rezolvarea ar fi s? schimbi >> în <<.

Îns? asta nu e tot. Gânde?te-te c? tu deschizi fi?ierul ?la într-un while ceea ce nu e tocmai ok.

Dac? n-ai în?eles, d?-mi PM.

Posted (edited)
Am codul asta:


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <regex>
#include <fstream>
#include <string>

using namespace std;

string delSpaces(string &str)
{
str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
return str;
}

int main()
{
string line;

ifstream myfile;

myfile.open("data.txt");
if (myfile.is_open())
{


while (getline(myfile, line))
{

delSpaces(line);
ifstream secondfile;
//deschide fisierul pentru a scrie, fara verificari etc.
secondfile.open("second.txt");
secondfile >> "LINE:" >> line >> "\n";
//cout << "User name:" << line << '\n';
}
myfile.close();
}
else{
cout << "Unable to open file.\n";
exit(EXIT_FAILURE);
}
system("PAUSE");
return 0;
}

Programul ar trebui sa deschida un fisier data.txt si sa il citeasca si apoi sa scrie fiecare linie citita intr-un alt fisier second.txt. Fisierul data.txt contine ceva, fisierul second.txt este gol. In final, second.txt si data.txt vor fi identice, avand acelasi continut (exceptand faptul ca second va avea in dreptul fiecarei linii scris cuvantul "LINE:" si ca liniile vor fi fara space.

Problema e ca nu mi se compileaza. Imi da eroarea asta:

error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const char [6]' (or there is no acceptable conversion)

Am cautat pe net si vad ca toti spun ca trebuie inclus #include <string>. Chestia e ca la mine e deja inclus si tot primesc eroarea asta. Care sa fie problema ?

Multumesc !

e gresit modul in care ai declarat file streamu.

Pentru a scrie trebuie sa folosesti:

ofstream file("fisier.txt"); in loc de ifstream care e pentru citire.

// si cum zicea h3xor , fisierul trebuie deschis doar odata , inaintea loop-ului while , si inchis dupa loop

Edited by botulnr2
Posted

@botulnr2

Vad ca ziceti ca e ceva in neregula si cu logica/pasii codului.

Eu am gandit asa:

1. Deschis fisierul ce trebuie citit.

2. Deschid si fisierul ce trebuie scris.

3. Citesc cate o linie din primul fisier si o bag in al doilea fisier. Ca altfel nu am cum sa stochez si sa modific toate liniile in acelasi timp, trebuie cate o linie la un moment dat.

Cum trebuia de fapt sa fie codul ?

Multumesc !

Posted (edited)

1) deschizi fisierele

2) cat timp ai linii de citit(sau cat timp nu ai intalnit EOF() ) citesti linia si o scrii in fisierul 2

3) inchizi fisierele

Ai gandit corect dar ai scris gresit.

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include <cstring>

#include <regex>

#include <fstream>

#include <string>

using namespace std;

string delSpaces(string &str)

{

str.erase(std::remove(str.begin(), str.end(), ' '), str.end());

return str;

}

int main()

{

string line;

ifstream myfile;

myfile.open("data.txt");

if (myfile.is_open())

{

ofstream secondfile;

secondfile.open("second.txt");

while (getline(myfile, line))

{

delSpaces(line);

//deschide fisierul pentru a scrie, fara verificari etc.

secondfile << "LINE:" << line << "\n";

//cout << "User name:" << line << '\n';

}

myfile.close();

secondfile.close();

}

else{

cout << "Unable to open file.\n";

exit(EXIT_FAILURE);

}

system("PAUSE");

return 0;

}

Si cred ca fisierul al doilea trebuie deschis ca si Append , pentru ca in fisierul 2 v-a apararea decat ultima linie scrisa .

Edited by botulnr2
  • Upvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...