我正在尝试将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;
}
基本上,我希望“ans”成为“12345”的内容,但是当我运行它时,它要么没有显示任何内容,要么显示5个带有问号的方框。有什么帮助吗?
答案 0 :(得分:0)
to_string()
返回一个字符串。
你可以简单地尝试:
ans += to_string(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;
}
您不希望在for循环中声明string ans
,因为每次循环运行时,ans
将不再保留先前的值,因为它再次被声明。
答案 1 :(得分:0)
您可以这样做:
string ans;
int number;
for (int a = 0; a < 5; a++){
number = rand() % 9 + 1;
ans += to_string(number);
}
cout << ans;
答案 2 :(得分:0)
您的代码存在许多问题。
您在循环中声明ans
,因此在每次循环迭代时都会创建并销毁它。如果您希望循环将5个数字附加到ans
,则必须在循环外声明它。
std::to_string()
输出新的std::string
作为其返回值。它没有&#34;神奇地&#34;将输入值转换为字符串类型,就像您的代码所假设的那样。您根本不会将返回的字符串附加到ans
。
=+
不是有效的追加运算符。它被解释为单独的运算符=
和+
。 std::string
没有=
运算符,它将int
作为输入,并且没有一元+
运算符。您需要使用+=
运算符。
试试这个:
#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...
或者,使用std::ostringstream
代替std::to_string()
:
#include <string>
#include <sstream>
#include <iostream>
std::ostringstream oss;
for (int a = 0; a < 5; ++a)
{
int number = ...
...
oss << number;
}
std::string ans = oss.str();
// use ans as needed...
话虽如此,你显然正在使用C ++ 11(当引入std::to_string()
时)或更高版本,所以你应该使用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);
...
}