[英]cannot convert 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' to 'LPCSTR {aka const 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;
}
您似乎認為random
是randomString(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.