从vector <string>转换为非标量类型字符串

时间:2015-11-14 06:50:19

标签: c++ string vector

我试图从矢量中分配一个带字符串的字符串。我创建了字符串并尝试从向量中分配索引的值:

1 #include "poker.h"
2 #include <iostream>
3 #include <stdlib.h>
4 #include <time.h>
5 #include <vector>
6 #include <string>
7 
8 hand::hand(std::vector<std::string>* cards) {   
9          cards_used = 0; 
10         cards_left = 52; 
11 
12         srand(time(NULL)); //Initialize random seed
13 
14         //Card 1
15         int rand_num = rand() % ( cards_left - 1 ); //Set random number
16 
17                 //Set value and suit
18         std::string temp = cards[rand_num]; //Problem here
19         c1_value = std::stoi(temp.substr(0, 1));
20 }

我收到此错误消息:

poker.cpp: In constructor ‘hand::hand(std::vector<std::basic_string<char> >*)’:
poker.cpp:18:35: error: conversion from ‘std::vector<std::basic_string<char> >’ to non-scalar type ‘std::string {aka std::basic_string<char>}’ requested
std::string temp = cards[rand_num];
                                 ^

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您正通过指针将cards向量传递给您的手构造函数。通过引用传递它:

hand::hand(std::vector<std::string>& cards)

或者,如果你想继续将cards作为指针传递,那么你需要正确地推导它以向其中插入一个值。

std::string temp = (*cards)[rand_num];

or

std::string temp = cards->at(rand_num);