嗨,所以我试图将cstring设为小写,但是当我在最后打印cstring时,我得到了一个奇怪的格式框,其中有些字母应该放在其中。有人有什么想法吗?

#include <string>
#include <iostream>
#include <string.h>

using namespace std;

int main ()
{
    int i=0;
    char* str="TEST";
    char c;
    char* cstr = new char[strlen(str) + 1];
    while (str[i])
    {
        c = str[i];
        c = tolower(c);
        strcat(cstr, &c);
        i++;
    }

    cout << cstr << endl;
    return 0;
}

最佳答案

问题是您错误地调用了strcat。第二个参数不是以空值结尾的字符串。

您真的根本不需要调用strcat。只需直接写入输出字符串即可:

尝试:

  while (str[i])
  {
    c = str[i];
    c = tolower(c);
    cstr[i] = c;
        i++;
  }
  cstr[i] = 0;


或等效地:

while(str[i])
{
  cstr[i] = tolower(str[i]);
  i++;
}
cstr[i] = 0;

关于c++ - 使用Tolower时C++字符串出现C++格式错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5760144/

10-11 16:38