在将字符串类转换为CString时出错
Error in String class to CString Conversion
我想把三个字符串变量放在一个数组中,除了彼此作为CString。这段代码给了我一个声明错误。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string Str1, Str2, Str3;
cin >> Str1 >> Str2 >> Str3;
int length_Str1 = Str1.size(), length_Str2 = Str2.size(), length_Str3 = Str3.size();
char aCString[length_Str1+length_Str2+length_Str3+1];
string Str_Array [] = {Str1, Str2, Str3};
strcpy(aCString, Str_Array.c_str());
return 0;
}
错误:
代码中有两个错误:
1. 14:32: error: request for member 'c_str' in 'Str_Array', which is of non-class type 'std::string [3] {aka std::basic_string<char> [3]}'
2. 14:39: error: 'strcpy' was not declared in this scope
原因:
- 第一个错误是因为您试图呼叫
c_str
进行aStr_Array
是指向字符串数组的指针,正确的方式是为字符串本身调用它,即Str_Array[someIndexOfArray]
- 第二个错误的原因是包含
strcpy
方法的string.h
没有包含在程序中。
解决方案:
尝试以下代码:
#include <iostream>
#include <string>
#include <string.h> //for strcpy and strcat method
using namespace std;
int main()
{
string Str1, Str2, Str3;
cin >> Str1 >> Str2 >> Str3;
int length_Str1 = Str1.size();
int length_Str2 = Str2.size();
int length_Str3 = Str3.size();
char aCString[length_Str1+length_Str2+length_Str3+1];
string Str_Array[] = {Str1, Str2, Str3};
strcpy(aCString, Str_Array[0].c_str()); //copy the first index of array
for(int i =1;i<3;i++) //concatenate each index of array
strcat(aCString, Str_Array[i].c_str());
return 0;
}
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 在C++中使用Cstring反转字符串
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 将 BSTR 转换为 CString 时出错
- 在将字符串类转换为CString时出错