Gå til innhold

hjelp med append


Anbefalte innlegg

Jeg er ikke no proff i c++, bedre sakt nybegynner på det sterkeste! Dette programmet skal gjøre om ordet du skriver inn til ascii kode men får error:

 

Her er koden:

 

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;

int main(void)
{
char C, spacing = ' ';
unsigned int i;
string s;

for(;;)
{
 cout << "skriv et ord: ";
 cin >> C;
 while(C != '\n') {
 	i = (int)C;
 	C=(char)i;
 	s.append(C);
           s.append(spacing);
 	cin >> C;
           if(C == '£')
           return 0;
       }
} 
 return 0;
} //slutt på main()

 

og her er errorene:

 

--------------------Configuration: binary - Win32 Debug--------------------

Compiling...

binary.cpp

E:\Kristoffer\c++\binary\binary.cpp(23) : error C2664: 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &__thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::append(con

st class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)' : cannot convert parameter 1 from 'char' to 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &'

Reason: cannot convert from 'char' to 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'

No constructor could take the source type, or constructor overload resolution was ambiguous

E:\Kristoffer\c++\binary\binary.cpp(24) : error C2664: 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &__thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::append(con

st class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)' : cannot convert parameter 1 from 'char' to 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &'

Reason: cannot convert from 'char' to 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'

No constructor could take the source type, or constructor overload resolution was ambiguous

Error executing cl.exe.

 

binary.exe - 2 error(s), 0 warning(s)

 

 

 

Noen som kan hjelpe meg? fortell lett iståfall fordi jeg skjønner ikke mye ;)

Lenke til kommentar
Videoannonse
Annonse

Kanskje noe slikt du er ute etter:

 

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main(void)
{
string s;
int i;

for(;;) {
 cout << "skriv et ord: ";
 cin >> s;

 if(s == "quit")
 	return 0;
 	
 i = 0;
 while(s[i]) {
 	cout << (int)s[i] << endl;
 	i++;  	
 }
}
} // main()

 

Du kan bruke string som om den var et array som du ser.

 

Du kunne også gjordt slik:

 

	while(s[i]) 
 	cout << (int)s[i++] << endl;

 

Mer "kompakt".

Lenke til kommentar

fant et nytt problem...

 

svaret etter jeg f.eks. har skrevet "hei", skal være tall.. men svaret jeg får er:

 

Hello World!

Skriv inn et ord: hei

h h e

 

^^sånn ser det ut!!

 

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
void ascii(); 
int main(void)
{
cout << "Hello World!" << endl;

ascii();
} //slutt på main()
//----------------------------------------------------------------

void ascii()
{
char C;
char spacing = ' ';
unsigned int i;
string s;

for(;;)
{
 cout << "skriv et ord: ";
 cin >> C;
 while(C != '\n') {
 	i = (int)C;
 	C=(char)i;
 	s += C;
           s += spacing;
 	cin >> C;
 	cout << s;	
 	if(C == '£');
       
 }
} 

}

Lenke til kommentar
Kanskje noe slikt du er ute etter:

 

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main(void)
{
string s;
int i;

for(;;) {
 cout << "skriv et ord: ";
 cin >> s;

 if(s == "quit")
 	return 0;
 	
 i = 0;
 while(s[i]) {
 	cout << (int)s[i] << endl;
 	i++;  	
 }
}
} // main()

 

Du kan bruke string som om den var et array som du ser.

 

Du kunne også gjordt slik:

 

	while(s[i]) 
 	cout << (int)s[i++] << endl;

 

Mer "kompakt".

Problemet mitt nå er at jeg skal ha mellomrom mellom tallene og ikke linje skift!

 

hvis jeg bytter << endl; men << " "; så følger "skriv et ord: " etter... og det skal ikek skje, fordi den skal på ny linje..

 

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main(void)
{
string s;
int i;

for(;;) {
cout << "skriv et ord: ";
cin >> s;

if(s == "quit")
 return 0;
 
i = 0;
while(s[i]) {
 cout << (int)s[i] << " ";
 cout << endl;
 i++;   
}
}
} // main()

Lenke til kommentar

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main(void)
{
string s;
int i;

for(;;) {
 cout << "skriv et ord: ";
 cin >> s;

 if(s == "quit")
 	return 0;
 	
 i = 0;
 while(s[i]) 
 	cout << (int)s[i++] << " ";
 cout << endl;
}
} // main()

 

Du mener slik:

 

skriv et ord: hei

104 101 105

skriv et ord:

?

Lenke til kommentar
#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main(void)
{
string s;
int i;

for(;;) {
 cout << "skriv et ord: ";
 cin >> s;

 if(s == "quit")
 	return 0;
 	
 i = 0;
 while(s[i]) 
 	cout << (int)s[i++] << " ";
 cout << endl;
}
} // main()

 

Du mener slik:

 

skriv et ord: hei

104 101 105

skriv et ord:

?

helt riktig :D

Lenke til kommentar

..og før du (eventuellt) spør, her er gjeldende kode for setninger i stedet for ord hvis du skulle trenge dette:

 

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main(void)
{
char c[255];
int i;

for(;;) {
 cout << "skriv en setning: ";
 cin.getline(c, 255);

 if(c == "quit")
 	return 0;
 	
 i = 0;
 while(c[i]) 
 	cout << (int)c[i++] << " ";
 cout << endl;
}
} // main()

 

:fun:

Lenke til kommentar
..og før du (eventuellt) spør, her er gjeldende kode for setninger i stedet for ord hvis du skulle trenge dette:

 

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main(void)
{
char c[255];
int i;

for(;;) {
 cout << "skriv en setning: ";
 cin.getline(c, 255);

 if(c == "quit")
 	return 0;
 	
 i = 0;
 while(c[i]) 
 	cout << (int)c[i++] << " ";
 cout << endl;
}
} // main()

 

:fun:

Du er en engel : :yes::thumbs:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...