![](/img/trans.png)
[英]error: cannot convert ‘std::basic_string<char>’ to ‘int’ in assignment
[英]Error cannot convert 'std::string {aka std::basic_string<char>}' to 'int' in assignment
我知道有人问过,
但我仍然找不到出路
我必须创建将按学生证号排序的数据
我希望你能帮助我
#include <iostream>
using namespace std;
int main () {
int NIM[10];
string nama[10], alamat[10];
char golongan_darah[10];
int i, j;
for (i=0; i<10; i++) {
cout << "Masukkan data siswa ke-" << i+1 << endl;
cout << "NIM : "; cin >> NIM[i];
cout << "Nama : "; cin >> nama[i];
cout << "Alamat : "; cin >> alamat[i];
cout << "Golongan Darah ('A'/'B'/'AB'/'O') : "; cin >> golongan_darah[i];
}
int pivot;
for (i=0; i<10; i++) {
for (j=i+1; j<10; j++){
if (NIM[i] > NIM[j]) {
pivot= NIM[i];
NIM[i]=NIM[j];
NIM[j]=pivot;
pivot= nama[i];
nama[i]=nama[j];
nama[j]=pivot;
pivot= alamat[i];
alamat[i]=alamat[j];
alamat[j]=pivot;
pivot= golongan_darah[i];
golongan_darah[i]=golongan_darah[j];
golongan_darah[j]=pivot;
}
}
}
cout << " NIM | Nama | Alamat | Golongan Darah" << endl;
for (i=0; i<10; i++) {
cout << NIM [i] << nama[i] << alamat[i] << golongan_darah[i] << endl;
}
}
它在pivot= nama[i];
和pivot= alamat[i];
提前致谢
您正在尝试将字符串值分配给 integer,您可以使用stoi()
function 来解决此问题。 这将接受一个字符串并将其转换为 integer 数据类型。
pivot= stoi(nama[i]);
pivot= stoi(alamat[i]);
您需要使用临时变量来切换数组中的顺序。 您已经使用pivot
为整数完成了此操作,但是,这不适用于字符串。
int pivot;
std::string temp;
for (i=0; i<10; i++) {
for (j=i+1; j<10; j++){
if (NIM[i] > NIM[j]) {
pivot= NIM[i]; // NIM stores integers, so this is fine
NIM[i]=NIM[j];
NIM[j]=pivot;
temp= nama[i]; // nama stores strings, so use the new string temp variable
nama[i]=nama[j];
nama[j]=temp;
temp= alamat[i]; // alamat stores strings, so use the new string temp variable
alamat[i]=alamat[j];
alamat[j]=temp;
pivot= golongan_darah[i]; // golongan_darah is stores chars, these can be stored in int
golongan_darah[i]=golongan_darah[j];
golongan_darah[j]=pivot;
}
}
}
或者,您可以使用std::swap
for (i=0; i<10; i++) {
for (j=i+1; j<10; j++){
if (NIM[i] > NIM[j]) {
std::swap( NIM[i], NIM[j] );
std::swap( nama[i], nama[j] );
std::swap( alamat[i], alamat[j] );
std::swap( golongan_darah[i], golongan_darah[j] );
}
}
}
#include <iostream>
using namespace std;
int main () {
int NIM[10];
string nama[10], alamat[10];
char golongan_darah[10];
int i, j;
for (i=0; i<10; i++) {
cout << "Masukkan data siswa ke-" << i+1 << endl;
cout << "NIM : "; cin >> NIM[i];
cout << "Nama : "; cin >> nama[i];
cout << "Alamat : "; cin >> alamat[i];
cout << "Golongan Darah ('A'/'B'/'AB'/'O') : "; cin >> golongan_darah[i];
}
int pivot;
for (i=0; i<10; i++) {
for (j=i+1; j<10; j++){
if (NIM[i] > NIM[j]) {
pivot= NIM[i];
NIM[i]=NIM[j];
NIM[j]=pivot;
pivot= stoi(nama[i]); //as pivot is int type nama is changed using stoi() function.
nama[i]=nama[j];
nama[j]=pivot;
pivot= stoi(alamat[i]); //as pivot is int type nama is changed using stoi() function.
alamat[i]=alamat[j];
alamat[j]=pivot;
pivot= golongan_darah[i];
golongan_darah[i]=golongan_darah[j];
golongan_darah[j]=pivot;
}
}
}
cout << " NIM | Nama | Alamat | Golongan Darah" << endl;
for (i=0; i<10; i++) {
cout << NIM [i] << nama[i] << alamat[i] << golongan_darah[i] << endl;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.