Okay, ich versuche, ein Problem, herauszufinden, wenn ich diesen Code unten versuchen:Warum wird char * nicht in den Vektor kopiert, aber die Zeichenfolge wird kopiert?
#include <iostream>
#include <vector>
#include <stdint.h>
#include <string>
#include <Windows.h>
using namespace std;
int main(){
vector<char*> v;
char s[10];
std::cout << "Enter Values :\n";
for (int i = 0; i<5; i++){
cin >> s;
v.push_back(s);
}
std::cout << "\n\n\nPrinted Values :\n";
for (auto ss : v){
cout << ss << "\n";
cout << "------------\n";
}
system("pause");
return 0;
}
Dies ist die Ausgabe die ich erhielt:
Enter Values :
aaaa
ssss
ddddd
ffff
errrr
Printed Values :
errrr
------------
errrr
------------
errrr
------------
errrr
------------
errrr
------------
Aber jetzt änderte ich "char *" zu "string":
#include <iostream>
#include <vector>
#include <stdint.h>
#include <string>
#include <Windows.h>
using namespace std;
int main(){
vector<string> v;
string s;
std::cout << "Enter Values :\n";
for (int i = 0; i<5; i++){
cin >> s;
v.push_back(s);
}
std::cout << "\n\n\nPrinted Values :\n";
for (auto ss : v){
cout << ss << "\n";
cout << "------------\n";
}
system("pause");
return 0;
}
Nun, speichert er alle von ihm in den Vektor:
Enter Values :
aaaa
ssss
ddddd
ffff
errrr
Printed Values :
aaaa
------------
ssss
------------
ddddd
------------
ffff
------------
errrr
------------
Meine Frage, warum char * nicht im Vektor gespeichert wird, aber Zeichenfolge im Vektor gespeichert wird?
'char *' ist nur ein Zeiger, während 'std :: string' eine Klasse ist. Arrays werden nicht automatisch kopiert. –