2009-02-27, 02:36
#1
Tror mitt problem ligger i att kasta om en variabel på rätt sätt men har googlat sönder mig totalt ikväll..
Behöver ersätta ett tecken i en string med "placeringstalet" av samma tecken i en referenssträng. "Placeringstalet" (bättre ord?) får jag med string::find_first_of men string::replace vill inte ta emot min input.
Har kommenterat koden väl och gett exempel på replace accepterar, om man kör den så ser man tydligt vad jag vill åstadkomma!

Så här ser hela felmeddelandet ut:
string::find_first_of:
http://www.cplusplus.com/reference/s..._first_of.html
string::replace:
http://www.cplusplus.com/reference/s...g/replace.html

Behöver ersätta ett tecken i en string med "placeringstalet" av samma tecken i en referenssträng. "Placeringstalet" (bättre ord?) får jag med string::find_first_of men string::replace vill inte ta emot min input.
Har kommenterat koden väl och gett exempel på replace accepterar, om man kör den så ser man tydligt vad jag vill åstadkomma!
Kod:
Kör linux och kompilerar med G++, så särskilda Borland/Microsoft-lösningar undanbedes vänligast #include <string> #include <iostream> #include <algorithm> using std::string; using std::cout; using std::endl; using std::replace; int main() { string s("c13s4d11h5"); string reference("shdc"); int foundLetters = 0; cout << "Ej bearbetad:\t" << s << endl << endl; cout << "Referens:\t" << reference << endl; cout << "Fung. ref:\t"; for (int i = 0; i < s.length(); i++){ // Repetera följande genom hela strängen: if (isalpha(s[i])){ // När en bokstav påträffas i 's' ... foundLetters ++; // ... memorera träffen ... cout << s[i] << "=" << reference.find_first_of(s[i]) << " " ; // ... visa en giltig referens ... /*OK*/ s.replace(i, 1, "."); // ... ersätt bokstaven med motsvarade bokstavs PLATS i 'reference', alltså en siffra. //*EJ OK*/s.replace(i, 1, reference.find_first_of(s[i])); // < men är ej EJ OK. Kastas om hur? } } cout << endl; cout << "Bokstäver:\t" << foundLetters << endl; cout << "Bearbetad:\t" << s << endl << endl; cout << "Istället för punker vill jag visa 'referenstalet' men får felmedd.:\n> ogiltig konvertering från 'size_t' till 'const char*' <"; return 0; }

Så här ser hela felmeddelandet ut:
/cpp/string_replace.cpp: In function "int main()":
/cpp/string_replace.cpp:24: fel: ogiltig konvertering från "size_t" till "const char*"
/cpp/string_replace.cpp:24: fel: initierar argument 3 till "std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::replace(typename _Alloc::rebind<_CharT>:: other::size_type, typename _Alloc::rebind<_CharT>:: other::size_type, const _CharT*) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]"
/cpp/string_replace.cpp:24: fel: ogiltig konvertering från "size_t" till "const char*"
/cpp/string_replace.cpp:24: fel: initierar argument 3 till "std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::replace(typename _Alloc::rebind<_CharT>:: other::size_type, typename _Alloc::rebind<_CharT>:: other::size_type, const _CharT*) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]"
http://www.cplusplus.com/reference/s..._first_of.html
string::replace:
http://www.cplusplus.com/reference/s...g/replace.html