首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在arduino代码中将char数组转换为字符串?

如何在arduino代码中将char数组转换为字符串?
EN

Stack Overflow用户
提问于 2019-04-23 16:38:59
回答 1查看 3K关注 0票数 0

我有一个项目来收集一个html网页,并将它转换成一组要打印的字符串。我使用arduino IDE来编写这个应用程序,因此java和其他解决方案不能工作,因为它必须被arduino IDE接受。char数组必须用于收集传入字符,但是要存储结果,我需要一个字符串。这些字符串需要能够接受所有字符,包括行尾、回车和制表符。Html不使用零字符,因此字符串仍然可以正确终止。

我尝试在char数组中的接收字符串的末尾放置一个零字符,但是该字符串仍然是零长度。我已经查看过ardunio.cc和这个网站,但是所有的答案都是如何将字符串转换成数组,或者评论说这个问题以前已经问过了,但没有回答。这个问题在有效的arduino代码中没有得到回答,因为即使编写了一个例程,将单个字符添加到字符串中,也会传递编译器,但在运行时不会生成字符串!

代码语言:javascript
运行
复制
String tempStr = "";
int count2 = 0;

char message[700];

for (int count = 0; count < htmlpage.length(); count++) // maximum string length
{
      bufferchr =0;
      bufferchr = (htmlpage.charAt(count2+lencount1));
      message[count2] = bufferchr;
      count2 = count2 +1;
}
tempStr = chararryToStr(message); // fails
tempStr=(message);   // also fails

计数不存在于循环之外,其值为零。我使用了count2来度量消息数组中结果字符串的长度。

所有字符串内容都以零长度形式出现,在打印char数组时显示真正的结果。

这个答案无法在Arduino Uno上编译,并给出以下错误,这些错误都是由于arduino核心编程不接受建议的代码所致。Arduino: 1.8.8 (Windows8.1),主板:"Arduino/Genuino Uno“ead_string_arduino:69:11: operator=不匹配(操作数类型为' String‘和'String*') tempStr =新字符串(message);//在C:\Program (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:222:0,中包含的文件中将其转换为字符串零长度^来自C:\Users\stephen\AppData\Local\Temp\arduino_build_685202\sketch\read_string_arduino.ino.cpp:1: C:\Program (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11:备注:候选: String& String::operator=(const &) String & operator = (const &rhs);^ C:\Program (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11:注:参数1从' String *‘到'const String&’C:\Program (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11:便笺:候选人: String& String::operator=(const *)String& operator = (const );^ C:\Program (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11:备注:参数1从' String‘到'const *’C:\Program (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11:便笺:候选人: String& String::operator=(const __FlashStringHelper*) String& operator = (const __FlashStringHelper str);^ C:\Program (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11:注意:参数1从“String”到“const__FlashStringHelper*”退出状态1没有已知的转换,不匹配“operator=”(操作数类型为“String”和“String*”)

EN

回答 1

Stack Overflow用户

发布于 2019-04-29 21:31:58

没有lencount1的声明,所以不能确切地确定您的代码在做什么,但是无论如何,它太复杂了。

首先,要将C++字符串复制到C数组,有多种方法可以做到这一点,但是strncpy(message,html.c_str(),sizeof (message));

可能是最简单的。

若要将C++字符串复制到另一个C++字符串中,并且假设htmlpage也是字符串,则只需要tempStr = htmlpage;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55815826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档