C++ Std string zu char umwandeln?
Hallo, ich habe in C++ einen Char der einen bestimmtes Zeichen eines std::strings als Wert haben soll. Dafür wollte ich die Funktion .at(x) benutzen. Aber einem char kann ich damit keinen Wert zuweisen. Wie kann ich das umwandeln?
std::string myStr="Hallo!";
char c=myStr.at(2); //Nicht möglich
Fehlermeldung:
error: cannot convert '__gnu_cxx::__alloc_traits<std::allocator<std::__cxx11::basic_string<char> >, std::__cxx11::basic_string<char> >::value_type' {aka 'std::__cxx11::basic_string<char>'} to 'char' in initialization
Ich habe den Fehler gefunden: myString war ein std::string Array
2 Antworten
Bemerkung nebenbei:
Ich habe nie verstanden, warum man Stringklassen nutzt: Sie machen alles nur umständlich und weniger effizient.
Dass sie dennoch in aller Munde sind, hat nur historische Gründe: Als C++ erfunden wurde, hat man sie als Standard-Beispiel für Datenabstraktion genutzt. Ferner hat man damit demonstriert, wie Dateineingabe und Datenausgabe typsicher gemacht werden können.
Deswegen schrieb ich ja: "Bemerkung nebenbei".
Es war auch keine Belehrung, sondern eine Feststellung (und Mitteilung von Erfahrung).
Java ist die einzige Programmiersprache, in der man Stringklassen benötigt.
doch es ist eine belherung sogar eine dekadente, den es ist die standard bibliothek . die lernt man erst und erkennt dann später vorzüge. darfst dich gerne dort beschweren wo es dir am anfang probleme bereitet hat . aber nicht generell sowas. Oder anders Gesagt, als Millionär dreht man natürlich keinen Cent um , da zahlt man mit sewinem Guten Namen und weiss gar nicht was Kleingeld ist .
klingt wie :warum nutzen denn nicht alle JQuery anstatt kompliziert raw javascript zu schreiben .
Weil man dann halt nix lernt . Grundlagen sind Grundlagen und erst später reift das wissen . Gibt egenug die es anders rum machen und dann bei grundlagen hilflos sind . Immer nur mit GUI und drag and drop gearbeite und dann sollten sie einfach mal ein CLI schreiben und wissen schon nicht wie man eine normale ausgabe bastelt ohne das sie ein Icon irgendwo hinschieben können , geschweige den eine msg box hinbekommen .
p.s. es will niemand wissen was du in deinem lehrproßess für grundlegende probleme gesehen hast . anderen hilft es didaktisch .
Du darfst es sehen, wie du willst. Der Fragesteller wird vielleicht doch schätzen, was ich ihm zu sagen versuche.
funktioniert bei mir
#include <iostream>
int main() {
std::string myStr="Hallo!";
std::cout << myStr.at(1);
return 0;
}
oder
int main() {
std::string myStr="Hallo!";
char c = myStr.at(1);
std::cout << c;
return 0;
}
Output :
a
Bei mir kommt der Fehler:
error: cannot convert '__gnu_cxx::__alloc_traits<std::allocator<std::__cxx11::basic_string<char> >, std::__cxx11::basic_string<char> >::value_type' {aka 'std::__cxx11::basic_string<char>'} to 'char' in initialization
und bei welcher Zeile ?
ich hab ein ganz normalen online compiler genommen c++ halt .
https://www.programiz.com/cpp-programming/online-compiler/
vielleicht ist deine Texteingabe ja mehrbyte
https://www.geeksforgeeks.org/string-at-in-cpp/
char& string::at (size_type idx)
es ist ja auch ein char
Ich habe meinen Fehler gefunden: "myString" war ein string array...
er fängt gerade an . bleib , mal locker . ausserdem ist da kein problem , der hat noch ganz andere sorgen , den der code funktioniert . und das war hier die frage und nciht deine belehrung