我需要将一些代码从c++翻译成java,我不太确定如何处理“const char*”运算符。检查下面的代码:
const char* handText;
const char* index = strchr(handText, '-');
char handCeil[4];
char handFloor[4];
strncpy(handCeil, handText, index - handText);
strcpy(handFloor, index + 1);我得到的是这样的:
String handText;
String index = handText.substring(handText.indexOf('-'));
char handCeil[4];
char handFloor[4];但是,当您在c++中添加整数(索引+ 1)或减去(索引- handText)字符串时,我不知道这意味着什么。如果这是一个愚蠢的问题,我很抱歉,但我从来没有学过如何用c++编程,只学会了用java编程。谢谢。
发布于 2011-05-18 10:37:53
这
strncpy(handCeil, handText, index - handText);
strcpy(handFloor, index + 1);等同于
int index = handText.indexOf('-'); // I changed this for you
handCeil = handText.substring(0, index+1);
handFloor = handText.substring(index+1);所以它用'-‘拆分字符串,并将第一部分(我认为包括'-’本身)放入handCeil,其余部分放入handFloor。
index - handText的意思是:index指向特定字符,handText指向该字符串的开头。如果将这两个指针相减,则得到这两个指针之间的字符数,或第一个'-‘的数组索引。strncpy复制n字节,因此如果index指向第三个字符,它将复制3个字符。index + 1表示指向index指向的字符1之后的字符。
发布于 2011-05-18 10:32:08
在Java中,你不能胡乱使用指针。您可以使用subString(int startIdx, int endIdx)等String方法提取要分配给handCeil和handFloor的子字符串。我更喜欢将它们保留为Java String。如果以后需要访问单个字符,则可以通过charAt(int idx)方法来访问。
发布于 2011-05-18 10:32:09
向char* (指针)加1会使指针递增1 char。
因此,在所提供的代码中,由于索引指向handText中的'-‘,因此递增索引将导致指针指向下一个字符。
(顺便说一句,提供的C++代码根本不安全,并且会对handText的许多可能值造成重大错误,比如'this is a string-‘。;)
https://stackoverflow.com/questions/6039231
复制相似问题