0); cout,c++,C++" /> 0); cout,c++,C++" />

如何修复C++;字符转换? 我有一个C++语言编写的函数: #include ... char read_somthing() { int n = 0, spot = 0; char buf = '\0'; char response[13]; memset(response, '\0', sizeof response); do { n = read( fd, &buf, 1 ); sprintf( &response[spot], "%c", buf ); spot += n; } while( buf != '\r' && n > 0); cout << "Response: " << response << endl; return buf; } void main() { cout << read_somthing(); char response = read_somthing(); cout << response; } #包括。。。 char read_somthing() { int n=0,spot=0; 字符buf='\0'; 字符响应[13]; memset(响应,'\0',响应大小); 做{ n=读取(fd和buf,1); sprintf(&response[spot],“%c”,buf); spot+=n; }而(buf!='\r'&&n>0); cout

如何修复C++;字符转换? 我有一个C++语言编写的函数: #include ... char read_somthing() { int n = 0, spot = 0; char buf = '\0'; char response[13]; memset(response, '\0', sizeof response); do { n = read( fd, &buf, 1 ); sprintf( &response[spot], "%c", buf ); spot += n; } while( buf != '\r' && n > 0); cout << "Response: " << response << endl; return buf; } void main() { cout << read_somthing(); char response = read_somthing(); cout << response; } #包括。。。 char read_somthing() { int n=0,spot=0; 字符buf='\0'; 字符响应[13]; memset(响应,'\0',响应大小); 做{ n=读取(fd和buf,1); sprintf(&response[spot],“%c”,buf); spot+=n; }而(buf!='\r'&&n>0); cout,c++,C++,您的read\u somthing正在读取输入中的一个字符并返回该字符的副本。第二次调用read\u somthing时,输入流已移到1个字符之前,如果输入为1个字符,则读取另一个字符将不会产生任何结果。这类似于初始化和赋值新界。 在C中是允许的,但是在C++中,它会给出不同的结果< /p> 第一个依赖于初始化,第二个依赖于赋值。在C++中,这些操作是可加载的,因此可能导致不同的结果。 < p>您返回的是代码> Buf变量,它是单个字符。循环退出有可能buf包含\r(或读取失败时为垃圾),但控制

您的
read\u somthing
正在读取输入中的一个字符并返回该字符的副本。第二次调用
read\u somthing
时,输入流已移到1个字符之前,如果输入为1个字符,则读取另一个字符将不会产生任何结果。

这类似于初始化和赋值新界。 在C中是允许的,但是在C++中,它会给出不同的结果< /p>

第一个依赖于初始化,第二个依赖于赋值。在C++中,这些操作是可加载的,因此可能导致不同的结果。

< p>您返回的是代码> Buf变量,它是单个字符。循环退出有可能
buf
包含
\r
(或
读取失败时为垃圾),但控制台输出上不会显示该信息


您可能希望返回在
响应中收集的数据
。为了缓解数据分配等问题,只需使用
std::string
-更改
read\u something
的返回类型,并将最后一行更改为
return response;

显示
read\u something()的确切内容
正在执行。它如何填充
响应
?看起来与您提供的内容一致……也许您知道您正在从
读取内容()返回一个字符
函数,而不是字符串?请清理您的代码,并提供一个“将什么放入字符中?”字符是单个字符,因此我很难理解您试图用它表示什么是的,我怀疑,注释掉第一个字符没有帮助,仍然是空的输出。此外,由于没有人删除返回buff,因此存在内存泄漏顺便说一句:
read\u something
的返回值不同。