Bonjour, je suis en train de faire un programme qui a pour but de lire une données dans un tableau qui se trouve en variable globale dans le fichier donnees.cpp. Je veux utiliser ce tableau dans le fichier test.cpp et il me dit :
error C2679: '=' binaire*: aucun opérateur trouvé qui accepte un opérande de partie droite de type 'std::string' (ou il n'existe pas de conversion acceptable)
voici le code mes deux fichiers :
donnees.cpp
test.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 #include <iostream> #include "stdafx.h" #include <string> #include <fstream> using namespace std; const int nbdonnees = 66; //constante du nombre de donnees à recuperer string tabdonnees[nbdonnees]; //tableau servant à ranger mes donnees string tabvaleur[nbdonnees]; //tableau dans lequel seront rangées les valeurs des données void RangerDonnees(); //procedure qui rempli le tableau int main() { int i =1; //indice de parcours du tableau où sont rangé les données du fichier matlab string mot; string chaine1; RangerDonnees(); ifstream fichier("donnees.m", ios::in); // on ouvre en lecture; if(fichier) // si l'ouverture a fonctionné { fichier >> mot; // on lit le premier mot du fichier while(i != nbdonnees) //tant que l'on a pas recuperer toutes les valeurs { while(mot != tabdonnees[i] ) // tant que le mot est different du mot du tableau { fichier >> mot; // on lit le mot suivant } fichier.seekg(2, ios::cur); //on se place sur la valeur à recuperer fichier >> chaine1; //on lit la valeur tabvaleur[i] = chaine1; // on range la valeur dans le tableau i++; //on passe à la donnee suivante } fichier.close(); } else { cerr << "Impossible d'ouvrir le fichier1 !" << endl; } ofstream fic("test.txt", ios::out | ios::trunc); // on ouvre en ecriture if(fic) // si l'ouverture a fonctionné { i=1; while(i != nbdonnees) { fic << tabdonnees[i]<< " = "; //on ecrit dans test.txt fic << tabvaleur[i] << endl; i++; } fic.close(); } else { cerr << "Impossible d'ouvrir le fichier2 !" << endl; } return 0; } void RangerDonnees() { tabdonnees[1] = "type_assemblage"; tabdonnees[2] = "type_bague"; tabdonnees[3] = "Nombre_de_pistes"; tabdonnees[4] = "type_element_roulant"; tabdonnees[5] = "E_bague"; tabdonnees[6] = "nu_bague"; tabdonnees[7] = "h_totale_bague"; }
je n'ai pas mis tout le code, seulement la partie qui est utile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 #include "stdafx.h" #include "test.h" #include "donnees.cpp" #include "testDoc.h" #include "testView.h" #include ".\testview.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CtestView IMPLEMENT_DYNCREATE(CtestView, CFormView) BEGIN_MESSAGE_MAP(CtestView, CFormView) ON_BN_CLICKED(IDC_BUTTONOK, OnBnClickedButtonok) END_MESSAGE_MAP() // construction ou destruction*de CtestView CtestView::CtestView() : CFormView(CtestView::IDD) , m_strNom(_T("")) , m_strPrenom(_T("")) , m_strAdresse(_T("")) , m_strCdp(_T("")) , m_strVille(_T("")) { // TODO : ajoutez ici le code d'une construction } CtestView::~CtestView() { } void CtestView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_strNom); DDX_Text(pDX, IDC_EDIT3, m_strPrenom); DDX_Text(pDX, IDC_EDIT5, m_strAdresse); DDX_Text(pDX, IDC_EDIT4, m_strCdp); DDX_Text(pDX, IDC_EDIT2, m_strVille); DDX_Control(pDX, IDC_BUTTONRAZ, m_strRAZ); DDX_Control(pDX, IDC_EDIT1, m_EditNom); } void CtestView::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); //initialisation manuelle m_strNom = tabvaleur[2]; UpdateData(FALSE);
Merci d'avance pour votre aide.
Partager