Länge des Strings und Teilstrings auslesen(C++)

Jambs

Grünschnabel
HI,

also ich hab erst vor kurzem mit C++ angefangen zu Programmieren und hab schon fragen =D.
Wir programmieren in der Schule mit Bloodshed C++, nur bis Schuljahresende und dann steigen wir nächstes Jahr auf Visual C++ mit GUI um.

Also ich lasse einen String einlesen so:
Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char sName;
    printf("Stingeingabe:\n");
    scanf("%s", &sName);

    system("PAUSE");
    return EXIT_SUCCESS;
}

jetzt will ich die länge des strings wissen und will dann den string sozusagen zerteilen in VB geht dies mit MID$(sStr,1,1). bei php geht des mit substr($text, 1, 1); wie geht dies in c++

thx für antworten
 
moin


Du solltest nicht char sName sondern char SName[20]; verwenden da du sonst nur ein Zeichen einlesen kannst.

Die komplette Länge ermittelst du mit:
Code:
int laenge = strlen(sName);

Das mit dem Teilstring ist nciht ganz so leicht, da C++ da für Standart-Strings nichts mitbringt. Also selber schreiben , was aber nicht al zu aufwendig ist.


mfg
umbrasaxum
 
Hi Jambs!
Bitte benutz mit C++ nicht mehr die rudimentären Funktionen aus C, wie printf scanf strlen etc. .
Dafür gibt es doch den std::string.

Code:
#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    string sName;
    cout << "Stringeingabe:" << endl;
    cin >> sName;

    system("PAUSE");
    return EXIT_SUCCESS;
}

Alle Funktionen die du jetzt noch suchst kannst du leicht hier finden:
http://msdn.microsoft.com/library/d...lib/html/vclrf_string_basicstring_members.asp

sName.substr(...) gibt es hier also auch für dich.
 
Also ich dank dir schon mal noch eine Frage wie kann ich den ASCII-Code von einem Zeichen Herausbekommen und den ASCII-Code wieder in ein Zeichen umwandeln?
 
moin


Code:
// Wert nach Zeichen
char zeichen = (char)123;

//Zeichen nach Wert
int wert = (int)'X';


mfg
umbrasaxum
 
Das mit der länge ermittel:
Code:
int laenge = strlen(sName);
Funktoniert nicht :(
ich bekomme eine fehlermeldung beim comilieren:

hier die Compiler LOG:
Code:
Compiler: Default compiler
Building Makefile: "C:\programmieren\cpp\NamesCheck\Makefile.win"
Führt  make... aus
make.exe -f "C:\programmieren\cpp\NamesCheck\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"C:/Programme/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Programme/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Programme/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Programme/Dev-Cpp/include/c++/3.4.2"  -I"C:/Programme/Dev-Cpp/include"   

main.cpp: In function `int main(int, char**)':

main.cpp:32: error: no matching function for call to `strlen(std::string&)'
C:/Programme/Dev-Cpp/include/string.h:49: note: candidates are: size_t strlen(const char*)

make.exe: *** [main.o] Error 1

Ausführung beendet
 
In einem char wird immer die ASCII-Repräsentation eines Zeichens gespeichert.
'char a = 'A'' ist das gleiche wie 'char a = 65' und 'char a = 0x41'
 
moin


Du könntest es aber so machen:
Code:
string text;

......

int laenge = strlen(text.c_str());


mfg
umbrasaxum
 
Also hier nochmal der alte Quellcode:
Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    string sName;
    printf("Stingeingabe:\n");
    scanf("%s", &sName);
    int laenge = strlen(sName);
    printf("Laenge des Stings: %d", laenge);

    system("PAUSE");
    return EXIT_SUCCESS;
}
und Compiler Log:
Code:
Compiler: Default compiler
Building Makefile: "C:\programmieren\cpp\NamesCheck\Makefile.win"
Führt  make... aus
make.exe -f "C:\programmieren\cpp\NamesCheck\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"C:/Programme/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Programme/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Programme/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Programme/Dev-Cpp/include/c++/3.4.2"  -I"C:/Programme/Dev-Cpp/include"   

main.cpp: In function `int main(int, char**)':

main.cpp:32: error: no matching function for call to `strlen(std::string&)'
C:/Programme/Dev-Cpp/include/string.h:49: note: candidates are: size_t strlen(const char*)

make.exe: *** [main.o] Error 1

Ausführung beendet

Hoffe es kann mir jemand helfen antworte erst heut abend wieder.
Bin da erst wieder daheim.
 
Zurück