【发布时间】:2012-09-09 05:09:34
【问题描述】:
可能重复:
C++ deprecated conversion from string constant to ‘char*’
我正在研究 C++ 中的字符串,并尝试了一个练习来试验字符串库中定义的一些函数的行为。我昨天编译了相同的程序,一切正常,没有任何警告或错误。但是,今天我再次尝试编译程序,但收到以下警告。
D:\C++ CodeBlocks Ex\Strings\main.cpp||In function 'int main()':|
D:\C++ CodeBlocks Ex\Strings\main.cpp|11|warning: deprecated conversion from string constant to 'char*'|
||=== Build finished: 0 errors, 1 warnings ===|
警告指的是这一行strncat("Hello",string,STRMAX-strlen(string));。我不确定,但我怀疑 strncat 函数不喜欢必须将文字数组与字符串常量连接起来的想法。对此的任何帮助将不胜感激。
#include <iostream>
#include <string.h>
using namespace std;
int main(){
#define STRMAX 599
char string[STRMAX+1];
cout<<"Enter name: ";
cin.getline(string,STRMAX);
strncat("Hello",string,STRMAX-strlen(string));
cout<<string;
return 0;
}
【问题讨论】:
-
我认为这里更大的问题是您完全错误地使用了
strncat()。 -
另外你应该使用 std::string 而不是 char 数组。
-
您使用的是 C 字符串,而不是 C++ 字符串。 C++ 的字符串类及其方法位于
标头中,而不是 (在 C++ 中通常写为 )。
标签: c++