C++ 在字符串中存储多个整数
我试图将5个整数存储到一个字符串中,但遇到了问题。代码如下: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;
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;
coutto_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);
...
}