【发布时间】:2012-05-24 02:45:12
【问题描述】:
我正在尝试使用代码将字符串转换为全部大写:
int client::get_upper(char*item_in)
{
int k ;
char * temp_str;
int length = strlen(item_in);
temp_str = new char [length+1];
for(k = 0; k < length; ++k)
temp_str[k] = toupper(item_in[k]);
temp_str[k] = '\0';
for(k = 0; k < length; ++k)
item_in[k] = temp_str[k];
return 0;
}
然而,当我尝试这样做时,我收到来自 Visual Studio 的访问冲突写入位置 xxxxxxxx。这是一个类,所以我被限制使用实际的字符串。
【问题讨论】:
-
告诉我们你是如何调用这个函数的。
-
为什么要分配第二个字符数组,而不是直接将大写字母写入原始数组? (顺便说一句,您正在泄漏内存,因为您从未在函数末尾执行 delete [] temp_str)
-
主救我们脱离“C 班”老师!
-
@JerryCoffin 确实,但在我看来,他们会留下来(从我国的学校系统来看)。唯一的办法就是让主用火杀死他们。或者至少,将他们介绍给 C++、随附的标准库以及他们称之为字符串类的东西。
-
@DomagojPandža:我什至可以理解想要教授低级编程,但如果这是您的意图,请从 实现 (最小)字符串类开始,然后使用它(或扩展它)用于以后的课程。
标签: c++ string pointers toupper