Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在字符串中存储多个整数_C++_Visual Studio_Visual C++ - Fatal编程技术网

C++ 在字符串中存储多个整数

C++ 在字符串中存储多个整数,c++,visual-studio,visual-c++,C++,Visual Studio,Visual C++,我试图将5个整数存储到一个字符串中,但遇到了问题。代码如下: for (int a = 0; a < 5; a++) { string ans; int number; int num; number = rand() % 9 + 1; cout << number << " "; num = number;

我试图将5个整数存储到一个字符串中,但遇到了问题。代码如下:

for (int a = 0; a < 5; a++)
        {
            string ans;
            int number;
            int num;
            number = rand() % 9 + 1;
            cout << number << " ";
            num = number;
            to_string(num);
            ans =+ num;
        }
for(int a=0;a<5;a++)
{
字符串ans;
整数;
int-num;
number=rand()%9+1;
cout
to_string()
返回一个字符串。 您可以简单地尝试执行以下操作:
ans+=to_字符串(num);

或者,编写代码以提高可读性的更好方法是使用临时字符串变量而不是
int num
来存储数字

    string temp;
    string ans;
    for (int a = 0; a < 5; a++)
    {
        //string ans;
        int number;
        //int num;
        number = rand() % 9 + 1;
        cout << number << " ";
        //num = number;
        temp = to_string(number);
        ans += temp;
    }
字符串温度;
字符串ans;
对于(int a=0;a<5;a++)
{
//字符串ans;
整数;
//int-num;
number=rand()%9+1;

你可以这样做:

string ans;
int number;

for (int a = 0; a < 5; a++){ 
    number = rand() % 9 + 1;
    ans += to_string(number);
}
cout << ans;
stringans;
整数;
对于(inta=0;a<5;a++){
number=rand()%9+1;
ans+=至_字符串(数字);
}

cout您的代码有许多问题

  • 您正在循环内声明
    ans
    ,因此每次循环迭代时都会创建和销毁它。如果您希望循环向
    ans
    附加5个数字,则必须在循环外声明它

  • std::to_string()
    输出一个新的
    std::string
    作为其返回值。它不会像代码假设的那样“神奇地”将输入值转换为字符串类型。您根本不会将返回的字符串追加到
    ans

  • =+
    不是有效的追加运算符。它被解释为单独的运算符
    =
    +
    std::string
    没有将
    int
    作为输入的
    =
    运算符,也没有一元
    +
    运算符。您需要改用
    +=/code>运算符。

试试这个:

#include <string>
#include <iostream>

std::string ans;
for (int a = 0; a < 5; ++a)
{
    int number = ...
    ...
    ans += std::to_string(number);
}
// use ans as needed...

用了11个例子(当代码< STD::toOrthRung()/Cuth>被引入)或以后,你应该使用C++随机数生成器来代替C++中的一个,例如:

#include <random>

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 9);

for (int a = 0; a < 5; ++a)
{
    int number = dis(gen);
    ...
}
#包括
std::随机_装置rd;
标准:mt19937 gen(rd());
标准:均匀分布图(1,9);
对于(int a=0;a<5;++a)
{
整数=dis(gen);
...
}

很接近,但您希望
ans+=to\u字符串(num);
。请显示真实的代码,而不是这个明显的伪代码,因为这里没有一行代码可以显示你声称看到的
ans
的值。此外,
ans
的值在循环的每次迭代中都会被破坏。唯一的事情是您将得到的响应是假代码是假答案。许多问题首先
to\u string(num)
没有做任何事情它应该是
ans+=to\u string(num)
还有
ans
应该在if语句之前。@SamVarshavchik显然我有一个显示ans的display语句,我只是觉得它不重要。@JakeFreeman What-if语句?实际上,对我有效的是ans=ans+to-string(num)!谢谢!
ans+=to-string(num)
ans=ans+to-string更可取(num)
=+
有效,但被解析为两个单独的运算符
#include <random>

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 9);

for (int a = 0; a < 5; ++a)
{
    int number = dis(gen);
    ...
}