不能轉換'__gnu_cxx::__alloc_traits<std::allocator<std::__cxx11::basic_string<char> > ,std: :__cxx11::basic_string<char>>:value_type' {aka 'std::__cxx11::basic_string<char>'} to ' const char*'gcc
真誠地說,我不知道為什么,也不知道如何糾正這個問題。
#include <stdio.h>
#include <conio.h>
#include <string>
#include <vector>
namespace anas
{
void passwordGenerator()
{
std::vector<std::string> PasswordString。
std:: string ElencoAlfabeto("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"/span>)。
char CharAlfabeto[ElencoAlfabeto.length()] 。
for (int Lettere_Create = 0; Lettere_Create < 8; Lete_Create )
{
int NumeroCarattere = rand() % sizeof(CharAlfabeto)。
CharAlfabeto [NumeroCarattere] = ElencoAlfabeto[NumeroCarattere];
PasswordString.push_back(CharAlfabeto[NumeroCarattere])。
}
for (int Lettere_Scritte = 0; Lettere_Scritte < 8; Lete_Scritte )
{
printf ( PasswordString.at(Lettere_Scritte) ) 。
}
}
}
int main()
{
system("cls")。
std ::printf("the program is started...
")。)
anas::passwordGenerator()。
輸出應該是一個隨機的8字母生成器。
是的,這是我第一次使用vector ...這里是我使用的文章:
uj5u.com熱心網友回復:
在這一行中
printf ( PasswordString.at( Lettere_Scritte) )。
函式printf需要一個const char*,但你給它一個std::string。
除了型別不匹配之外,你永遠不應該將任意資料作為printf的第一個引數,因為它將嘗試解釋格式代碼。
如果你真的想使用printf,這樣做就可以了:
printf( "%s"/span>, PasswordString. at(Lettere_Scritte).c_str() ) 。
你可以使用puts完全跳過格式代碼解碼:
puts( PasswordString.at(Lettere_Scritte).c_str( ) ) 。
或者你可以使用C iostreams,它知道std::string,根本不需要c_str()呼叫:
std::cout << PasswordString.at(Lettere_Scritte)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/314117.html
標籤:


