所以我试图将Ceasar Cipher与char *
一起使用,我写了一个简单的函数:
char * Encrypt(char * s, int k)
{
char * c = s;
for(int i = 0; i < strlen(s); i++)
c[i] += k;
return c;
}
看起来似乎应该有效,但事实并非如此。它在运行程序时抛出错误。
以下是我如何调用此函数的示例:
int main()
{
cout << Encrypt("hello", 2) << endl;
system("pause");
return 0;
}
在您说“为什么不只使用string
?”之前,答案是我在某个SDK上编写C ++,这会导致编译器在使用string
时出错。好的,但是,任何形式的帮助都将非常感谢,谢谢!
答案 0 :(得分:6)
"Hello"
之类的字符串文字是只读。如果您尝试修改此类字符串,则会有未定义的行为。
在C ++中,字符串文字实际上是常量字符的数组。
使用char*
访问字符串文字应该让编译器向您发出警告。如果不是,您需要调高警告级别或启用更多警告。
如果您真的使用C ++进行编程,我建议您了解要阅读的std::string
和find a good beginners book。