arduino-ide-将字符串和integer连接到char



以下代码应该适用于字符串,但似乎不适用于char数组。

char *TableRow = "
<div class = "divTableRow">
<div class = "divTableCell">" + j + "< / div >
<div class = "divTableCell" id="tm" + i + "b" + j + "">0< / div >
<div class = "divTableCell" id="sm" + i + "b" + j + "">0< / div >
< / div >
";

我收到的消息是缺少一个终止"字符。我试图完成的是将文本和变量(int jint i(连接到char数组。我做错了什么?

C++中没有前缀的字符串文字的类型为const char[N]。例如,"abc"const char[4]。由于它们是数组,所以不能像对int[]等任何其他数组类型不进行连接那样对它们进行连接。"abc" + 1是指针算术,而不是转换为字符串然后附加到前一个字符串的数值。此外,不能有这样的多行字符串。使用多个字符串文字,或使用原始字符串文字R"delim()delim"

因此,要获得这样的字符串,最简单的方法是使用流

std::ostringstream s;
s << R"(
<div class = "divTableRow">
<div class = "divTableCell">)" << j << R"(</div>
<div class = "divTableCell" id="tm")" << i << "b" << j << R"(">0</div>
<div class = "divTableCell" id="sm")" << i << "b" << j << R"(">0</div>
</div>
)";
auto ss = s.str();
const char *TableRow = ss.c_str();

您也可以将整数值转换为字符串,然后连接字符串。下面是一个使用多个连续字符串文字而不是原始字符串文字的示例:

using std::literals::string_literals;
auto s = "n"
"<div class = "divTableRow">n"
"<div class = "divTableCell""s + std::to_string(j) + "</div>n"
"<div class = "divTableCell" id="tm" + std::to_string(i) + "b"s + std::to_string(j) + "">0</div>n"
"<div class = "divTableCell" id="sm" + std::to_string(i) + "b"s + std::to_string(j) + "">0</div>n"
"</div>n"s;
const char *TableRow = s.c_str();

如果您是较旧的C++标准,请删除usings后缀

相关内容

  • 没有找到相关文章

最新更新