可能重複:
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數組。 – Borgleader
您使用的是C字符串,而不是C++字符串。 C++的字符串類及其方法位於標題中,而不是(通常在C++中用編寫)。 –
sepp2k