访问数组的最后一个元素 我试图访问C++中数组中的最后一个元素(更具体地说,我试图把一个整数转换成字符数组,然后访问最后一个数字)。以下是我到目前为止的想法: int number_to_convert = 1234; char * num_string; sprintf(num_string, "%d", number_to_convert); printf("Number: %d Sizeof num_string: %d Sizeof *num_string: %d Sizeof num_string[0]: %d\n", number_to_convert, sizeof(num_string), sizeof(*num_string), sizeof(num_string[0]));

访问数组的最后一个元素 我试图访问C++中数组中的最后一个元素(更具体地说,我试图把一个整数转换成字符数组,然后访问最后一个数字)。以下是我到目前为止的想法: int number_to_convert = 1234; char * num_string; sprintf(num_string, "%d", number_to_convert); printf("Number: %d Sizeof num_string: %d Sizeof *num_string: %d Sizeof num_string[0]: %d\n", number_to_convert, sizeof(num_string), sizeof(*num_string), sizeof(num_string[0]));,c++,arrays,element,C++,Arrays,Element,使用此信息,我尝试了几种不同的组合来访问最后一个元素: num_string[sizeof(number_to_convert)/sizeof(*number_to_convert)-1]; num_string[sizeof(number_to_convert)-sizeof(char)] 也许有更好的方法来获取最后一个数字,但这是我能找到的最好的方法。我想要最后一个字符(不是空字符)。对于n的最后一个十进制数字,请尝试n%10 要获取该数字的文本数字字符,请使用'0'+(n%10) 对于任

使用此信息,我尝试了几种不同的组合来访问最后一个元素:

num_string[sizeof(number_to_convert)/sizeof(*number_to_convert)-1];
num_string[sizeof(number_to_convert)-sizeof(char)]

也许有更好的方法来获取最后一个数字,但这是我能找到的最好的方法。我想要最后一个字符(不是空字符)。

对于
n
的最后一个十进制数字,请尝试
n%10

要获取该数字的文本数字字符,请使用
'0'+(n%10)

对于任何其他基数,用该基数替换
10


“因为我能行”的方式:

std::ostringstreams;

s对于
n
的最后一个十进制数字,请尝试
n%10

要获取该数字的文本数字字符,请使用
'0'+(n%10)

对于任何其他基数,用该基数替换
10


“因为我能行”的方式:

std::ostringstreams;

这很有效,谢谢,但我也很好奇如何用我展示的方式来做,即使它更复杂。我现在正在学习数组/指针,把一个数字转换成C++字符串,然后最后一个元素看起来是一个很好的方法。如果有的话,可以使用字符串流和格式化输出。请注意,您使用的
sprintf
是错误的——如果您不熟悉手动内存管理,最好不要远离那些致命的C函数。这非常有效,谢谢,但我也很好奇如何按照我演示的方式来做,即使它更复杂。我现在正在学习数组/指针,把一个数字转换成C++字符串,然后最后一个元素看起来是一个很好的方法。如果有的话,可以使用字符串流和格式化输出。请注意,您使用的
sprintf
是错误的——如果您不熟悉手动内存管理,最好不要远离那些致命的C函数。您的意思是num_string[sizeof(num_string)-sizeof(char)]而不是number_to_convert[sizeof(number_to_convert)-sizeof(char)]num string在您的示例中没有分配内存,那很危险。您还应该保留sprintf的返回值,因为它提供了实际写入的字符总数。此外,建议使用snprintf而不是sprintfDoes,这样的代码甚至可以编译?您正在尝试取消引用一个int变量(number-to-convert)。您的意思是num-string[sizeof(num-string)-sizeof(char)]而不是number-to-convert[sizeof(number-to-convert)-sizeof(char)]在您的示例中num-string没有分配内存,这很危险。您还应该保留sprintf的返回值,因为它提供了实际写入的字符总数。此外,建议使用snprintf而不是sprintfDoes,这样的代码甚至可以编译?您正在尝试取消对int变量的引用(数字转换)。
std::ostringstream s;
s << n;
char last_digit = *s.str().rbegin();
const char last_digit = *static_cast<std::ostringstream&>(std::ostringstream() << n).str().rbegin();