关于一个C++数组有关问题
关于一个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,挺好用!
------解决方案--------------------
------解决方案--------------------
只有字符串才会出现\0结尾的问题,楼主估计是用了strcpy或strlen等字符串处理的函数。
------解决方案--------------------
没看懂,\0的ASC码是真0.而字符串中0的ASC码是48.怎么会搞混淆在一起了。
------解决方案--------------------
正解
------解决方案--------------------
Windows里面对于多个字符串的标准做法是:每个串用\0结束,在所有串的最后再加上一个\0,这样当你读到连续两个\0就表示全部结束了。
------解决方案--------------------
把长度考虑进去,直接memcpy吧
------解决方案--------------------
传的时候把长度带上。
------解决方案--------------------
为什么一定要用00做为分隔符?或者直接用空格、tab、回车之类的?
如果一定00做为分隔符,那么就把长度传递过去,然后需要做些特殊处理(因为字符串处理函数都是以'\0'判断字符串结束的)。
------解决方案--------------------
直接操作内存
------解决方案--------------------
不会有截断的问题,放心使用
比如声明了一个 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,挺好用!
------解决方案--------------------
------解决方案--------------------
只有字符串才会出现\0结尾的问题,楼主估计是用了strcpy或strlen等字符串处理的函数。
------解决方案--------------------
没看懂,\0的ASC码是真0.而字符串中0的ASC码是48.怎么会搞混淆在一起了。
------解决方案--------------------
正解
------解决方案--------------------
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; }
------解决方案--------------------
------解决方案--------------------
strcpy
------解决方案--------------------
REG_MULTI_SZ