在将字符串类转换为CString时出错

Error in String class to CString Conversion

本文关键字:CString 出错 转换 字符串      更新时间:2023-10-16

我想把三个字符串变量放在一个数组中,除了彼此作为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;
}