首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于一个C++数组有关问题

2012-09-07 
关于一个C++数组问题比如声明了一个 char temp[100]保存了“你好00谢谢帮助”ASCII值(中间00为分隔符) C4 E

关于一个C++数组问题
比如声明了一个 char temp[100];
保存了“你好00谢谢帮助”ASCII值(中间00为分隔符) C4 E3 BA C3 00 D0 BB D0 BB B0 EF D6 FA 
但是保存在数组后,返回到另外一个方法里面,只有 C4 E3 BA C3的值。后面的被忽略。
原因是数组碰到0之后把它当做结尾"/0" 了。不知道哪位大侠有好的解决方案
谨表谢意,90°鞠躬

[解决办法]
分隔符 能换成别的吗
[解决办法]
把数组长度也传过去
[解决办法]
数组不会被截断吧?你直接把数组首地址赋给string,是string遇到0截断。。
[解决办法]
memcpy
[解决办法]
char temp[100]

==>

wchar_t temp[100];
[解决办法]
对,数组不会截断的,你试下memcpy,挺好用!
[解决办法]

探讨
memcpy

[解决办法]
只有字符串才会出现\0结尾的问题,楼主估计是用了strcpy或strlen等字符串处理的函数。
[解决办法]
没看懂,\0的ASC码是真0.而字符串中0的ASC码是48.怎么会搞混淆在一起了。
[解决办法]
正解
探讨
数组不会被截断吧?你直接把数组首地址赋给string,是string遇到0截断。。

[解决办法]
Windows里面对于多个字符串的标准做法是:每个串用\0结束,在所有串的最后再加上一个\0,这样当你读到连续两个\0就表示全部结束了。
[解决办法]
把长度考虑进去,直接memcpy吧
[解决办法]
传的时候把长度带上。
[解决办法]
为什么一定要用00做为分隔符?或者直接用空格、tab、回车之类的?

如果一定00做为分隔符,那么就把长度传递过去,然后需要做些特殊处理(因为字符串处理函数都是以'\0'判断字符串结束的)。
[解决办法]
直接操作内存
[解决办法]
不会有截断的问题,放心使用

C/C++ code
#include <iostream>#include <cstring>char* getStr(){  char* p  = new char[100];  strcpy(p, "你好00谢谢帮助");  return p;}int main(){  char* p = getStr();  std::cout << p <<  std::endl;  delete [] p;  return 0;}
[解决办法]
探讨
为什么一定要用00做为分隔符?或者直接用空格、tab、回车之类的?

如果一定00做为分隔符,那么就把长度传递过去,然后需要做些特殊处理(因为字符串处理函数都是以'\0'判断字符串结束的)。

[解决办法]
strcpy
[解决办法]
REG_MULTI_SZ

热点排行