语句问题中要字符串的CPP int

A CPP int to string in a statement question

本文关键字:CPP int 字符串 问题 语句      更新时间:2023-10-16

我必须写一些类似的东西

q.push_back(q1); ... to ... q.push_back(q100);

我以的身份写这篇文章

for (int i = 1; i <= 100; i++) {
    try {
        std::string s = boost::lexical_cast<std::string > (i);
        "q.push_back(q" + s + ");";
    } catch (boost::bad_lexical_cast &) {
        std::cout << "Some error message n";
    }
}

它可以编译(没有语法错误(,但不起作用。我不知道如何混合使用cpp语句和字符串来生成复合语句。

如有任何帮助,我们将不胜感激。谢谢

怎么样:

for (int i = 1; i <= 100; i++)
{
    std::cout << "q.push_back(q" << i << ");n";
}

如果您正在使用std::string(看起来像是(,请尝试s.append(str);

std::ostringstream os;
for( int i = 1; i < 100; ++i)
{
   os << "s.push_back( q" << i << "); ";
}
std::string result = os.str();
// Do what you need with result

您的输出字符串被放入for循环中,因此在每个循环中都会初始化字符串,上一个循环中生成的内容也会丢失。

您并没有告诉它将该字符串放在哪里,它只是创建了一个临时字符串。尝试附加到s

std::string s = "q.push_back(q";
s.append(boost::lexical_cast<std::string > (i));
s.append(");");

目前尚不清楚您希望如何处理该字符串。如果您将其打印到std::cout,那么您的错误消息将与结果混合在一起。您应该使用std::cerr

std::cerr << "Some error message" << std::endl;

变量q1q2。。。,q100本来应该是一个数组。

如果我对您尝试做的事情的理解是正确的,那么您基本上想要自动生成一些代码。为此,人们通常使用简单的宏定义。。。

您只需定义一个宏,该宏将for循环中的相应整数作为参数,并扩展到您需要的代码…

快速查看[http://en.wikipedia.org/wiki/C_preprocessor#Token_concatenation]。你可以在宏中使用##将东西粘合在一起,所以你可以在i的for循环中使用如下内容:

#define MY_PUSH(vector, i) vector.push_back(q##i);

但正如人们所建议的那样,首先使用一组变量可能会更好,因为宏基本上是邪恶的,而不是原始代码生成工具。。。