簡體   English   中英

嘗試生成隨機字母錯誤:無法轉換 'std::__cxx11::string {aka std::__cxx11::basic_string<char> }' 到 'char' 在分配</char>

[英]Trying to generate a random letter error: cannot convert 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' to 'char' in assignment

我正在嘗試打印字符。 如何將字符串轉換為字符? 我收到此錯誤:

錯誤:無法在賦值中將 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' 轉換為 'char'

#include <iostream>
#include <random>
#include <string>
#include <ctime>
using namespace std;
int const MAX = 4;

string randomString(int n){// generating random letter

    char alphabet[MAX] = { 'r', 'a', 'n', 'd'};

    string res = "";
    for (int i = 0; i < n; i++)
        res = res + alphabet[rand() % MAX];
 
    return res;
}

int main (){
    srand(time(NULL));
    char random;

    random = randomString(1);// problem lies here
    char a1 = random;

    char a2 = random;

    char a3 = random;
    cout<<a1<< " " << a2 << " " << a3<< endl;
}

您似乎認為randomrandomString(1)的別名,將random分配給多個變量將調用randomString(1)多次。 它不是。 這不是變量的工作方式。

您正在調用randomString(1)一次,然后嘗試將其返回值(即std::string (即char的集合))分配給單個char 不存在這樣的轉換,因此出現錯誤。

試試這個:

int main (){
    srand(time(NULL));
    string a1 = randomString(1);
    string a2 = randomString(1);
    string a3 = randomString(1);
    cout << a1 << " " << a2 << " " << a3 << endl;
}

如果您真的想要單個char ,請使用std::string::operator[]

int main (){
    srand(time(NULL));
    char a1 = randomString(1)[0];
    char a2 = randomString(1)[0];
    char a3 = randomString(1)[0];
    cout << a1 << " " << a2 << " " << a3 << endl;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM