在c ++中不能在字符串中包含整数

时间:2017-03-28 06:30:04

标签: c++

当我尝试使用rand()函数创建整数时,我不能将它们包含在字符串中。这些是我尝试过的两个代码:

 int x1, x2;
    x1 = (rand() % 14 + 2);
    x2 = (rand() % 14 + 2);

    char c1 = char(x1);
    char c2 = char(x2);

    string Hand = {c1, c2};

    cout << Hand << endl;

我没有遇到任何错误,但它没有运行。这是我认为正确的那个:

int c1, c2;
    c1 = (rand() % 14 + 2);
    c2 = (rand() % 14 + 2);

    to_string(c1);
    to_string(c2);

    string Hand = {c1[0], c2[0]};

    cout << Hand << endl;

但事实并非如此。这一定非常简单。怎么做?

3 个答案:

答案 0 :(得分:2)

注意c1和c2不是向量,所以c1 [0]没有意义。 to_string方法返回一个字符串,不要将参数变为一个。也就是说,代码可以更好地工作:

int c1, c2;
 c1 = (rand() % 14 + 2);
 c2 = (rand() % 14 + 2);



    string Hand = {to_string(c2)[0], to_string(c1)[0]};

cout << Hand << endl;

答案 1 :(得分:1)

尝试这样的事情:

#include <iostream>
#include <stdlib.h>     /* srand, rand */
#include <string>
#include <sstream>
using namespace std;

int main() {
    // your code goes here
    std::ostringstream ss;
    int x1, x2;
    x1 = (rand() % 14 + 2);
    x2 = (rand() % 14 + 2);
    ss << x1 << x2;
    std::string Hand = ss.str();

    cout << Hand << endl;

    return 0;
}

答案 2 :(得分:0)

C ++是静态类型的语言。 std::to_string不会更改类型...它会返回字符串。

至于第一个代码,你正在处理不可打印的字符。