在字符串

时间:2017-12-08 02:50:33

标签: 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;
            to_string(num);
            ans =+ num;
        }

基本上,我希望“ans”成为“12345”的内容,但是当我运行它时,它要么没有显示任何内容,要么显示5个带有问号的方框。有什么帮助吗?

3 个答案:

答案 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);
    ...
}