繁体   English   中英

错误无法转换 'std::string {aka std::basic_string<char> }' 到 'int' 赋值</char>

[英]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]);

以下是更多信息: http://www.cplusplus.com/reference/string/stoi/

您需要使用临时变量来切换数组中的顺序。 您已经使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM