ERROR 已弃用从字符串常量到 'char*' 的转换
ERROR deprecated conversion from string constant to 'char*'
我被错误消息卡住了,不赞成从字符串常量转换为'char*'
我在这里试图做的是将"First"answers"Last"分配给cfoo1,并使cfoo2等于cfoo1。最后,将cfoo1和cfoo2显示为标准输出。
#include <iostream>
#include <cstring>
#include "cfoo.h"
using namespace std;
CFoo :: CFoo(char first[], char last[]){
m_first[BUF] = first[BUF];
m_last[BUF] = last[BUF];
}
void CFoo :: WriteFoo(){
cout << m_first[BUF] << ", " << m_last[BUF];
}
#ifndef CFOO_HEADER
#define CFOO_HEADER
#include <iostream>
#include <cstring>
using namespace std;
const int BUF = 256;
class CFoo{
public:
CFoo(char first[], char last[]);
void WriteFoo();
private:
char m_first[BUF];
char m_last[BUF];
};
#endif
#include <iostream>
#include "cfoo.h"
using namespace std;
int main(){
CFoo foo1("Jong", "Yoon");
CFoo foo2 = foo1;
cout << "foo1 = ";
foo1.WriteFoo();
cout << endl;
cout << "foo 2 = ";
foo2.WriteFoo();
cout << endl;
return 0;
}
有两个问题:
-
使用字符串文字(类型为
char const*
)来调用需要char[]
的函数。 -
正在尝试分配给
char
阵列。
修复:
-
将构造函数更改为:
CFoo(char const* first, char const* last);
-
将其实现更改为:
CFoo(char const* first, char const* last) { // Make sure to copy at most BUF-1 characters // to m_first and m_last. m_first[0] = ' ' strncat(m_first, first, BUF-1); m_last[0] = ' ' strncat(m_last, last, BUF-1); }
您还需要更改CFoo::WriteFoo()
的实现以使用整个字符串
void CFoo::WriteFoo()
{
cout << m_first << ", " << m_last;
}
此外,
访问m_first[BUF]
或m_last[BUF]
是一个错误,因为访问这些数组的有效索引的最大值是BUF-1
。
相关文章:
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 将函数参数"const char*"转换为"std::string_view"是
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- 如何在虚幻引擎4中将char*转换为TCHAR?
- C++:将模板类型 char 转换为 std::string
- strcmp/char* 转换无法按预期工作
- C++中的SQLite char*转换
- 无法从 const char* 转换为 const char *&
- 在 C++ 中将 char 转换为 int,而无需符号位传播
- 如果必须包含西里尔字符,如何将 char* 转换为 std::string?
- 试图使用strCMP时的char转换错误
- 无法从'const char *'转换为'LPCTSTR'
- 将 std::vector<char> 转换为字符* 会导致字符缺陷
- 使用 static_cast 将 char 转换为 int c++
- 如何在 C++(MFC) 中将 char* 转换为 LPCTSTR
- 无法将const char转换为字符串构造字符串