我在尝试将字符串添加到 char 数组时遇到问题,控制台给了我一个代码错误
这是我的代码:
std::string text1 = "hello";
std::string text2 = "world";
const char *texto[] = {
"Texto1: " std::text1,
"Texto2: " std::text2
}
它显示给我的错误是这样的expected '}'
:to match '}'
我在尝试将字符串添加到 char 数组时遇到问题,控制台给了我一个代码错误
这是我的代码:
std::string text1 = "hello";
std::string text2 = "world";
const char *texto[] = {
"Texto1: " std::text1,
"Texto2: " std::text2
}
它显示给我的错误是这样的expected '}'
:to match '}'
我通过以下方式做到这一点:
strcpy()
用于将字符串 string2 复制到 string1 中。返回 string1 的值。strcat()
允许将一个内存块添加到另一个内存块。这些函数的声明可以在头文件中找到
string.h
。因此,为了能够在程序中使用此功能,您必须编写:我希望它对你有用。
这些错误在您看来是因为构造或正确有两个原因:
std::text1
不存在。你有一个变量text1
......但它没有在命名空间中声明std
。char*
没有收集类型字符串char
和std::string
. 如果你想这样做,你必须编写一个执行该操作的函数。正如您稍后将看到的,该操作根本不是微不足道的。char
和text1
...之间放置运算符...编译器几乎不会知道您要对它做什么(您想将其连接起来,但编译器不会事后猜测)。最简单的是使用一个数组
string
:尽管为此最好使用
std::array
:但是,如果您必须强制使用 的数组
char
,那么您将不得不手动复制文本,因为文本的内容仅在运行时才知道。一种可能性是使用 lambdas (C++11):lambda 所做的是生成最终结果并将其复制到 type 的指针中
char
。当然,你必须记得清理动态内存:如果您不能(或不会)使用 lambda,您可以轻松地将其替换为独立函数:
奇怪的是,编译器并没有崩溃并席卷你的邻居。您编写的代码在 C++ 中没有任何意义。
初始化数组1 of 的方法是在赋值运算符之后
char
写一个文本字面量:编译器将负责计算数组1的大小,包括字符串 terminator,因为您可以看到花括号是可选的,但您可以使用它们:
您在代码中编写了一个字符串文字,后跟一个不存在的符号:
没有办法直接做你想做的事,从数组1开始需要在编译时知道它们的大小,除非它们是动态大小的:
使用所需大小创建后,您可以制作副本:
不再使用时不要忘记释放内存:
提议。
老实说,您正在使您的生活复杂化,忘记编队1并使用另一个
std::string
:您使事情变得过于复杂,String有一个名为c_str的函数,它返回一个指向 string 的 char 常量指针
const char *
,您的代码很可能如下所示:您的错误是因为数组声明末尾缺少分号。
已编辑 1
我想澄清一些事情,因为我很短,我把它给你的方式,它工作,它专门做你想要的,句号,但你必须考虑到一些事情,c_str函数返回一个指向当前数据数组的指针,如果在我问你的代码之后,如果你修改你的两个
string
中的一个,矩阵texto[]
将指向任何东西,因为没有复制,它被传递给指针,为了避免这种情况,有必要给出内存到矩阵并复制 Thestring
,此代码有效:正如您将注意到的,我必须为矩阵提供动态内存,以制作副本,您已经有了一个副本,现在,我回来说,您必须有一些理由想要使用
const char *
发生在的矩阵我很多,但如果没有,为什么?,如果你没有理由,使用std::vector<std::string>
标题<vector>
,你会避免很多问题。