0
我想要一種具有固定最大長度的cstring,讓我們說5個。如果可能的話,我也想使用標準的cstring
函數。 但是,由於這個,我得到了很多功能參數的問題。我不是很熟悉typedef,但我不知道這是錯誤的方法還是我可能只是錯過了一些東西。 C++(MinGW的-W64)字符數組的typedef和在函數中的使用
typedef char Name[5];
std::ostream& operator<<(std::ostream& os, Name& car)
{
os << car;
return os;
}
void Change(Name str)
{
str[2] = '0';
}
Name ChangeRtn(Name str)
{
str[2] = '1';
return str;
}
void ChangeCat(Name * strp)
{
strcat(strp,"3");
}
int main()
{
Name test = "abcd";
Change(test);
std::cout << test << std::endl;
Name test2 = ChangeRtn(test);
std::cout << test2 << std::endl;
Name * test3;
//*test3 = "12"; //incompatible types... make a operator= func
strcpy (*test3,"12"); //a temp replacement of operater=?
ChangeCat(test3);
std::cout << test3 << std::endl;
return 0;
}
返回錯誤......
typedef.cpp:15:24: error: 'ChangeRtn' declared as function returning an array
Name ChangeRtn(Name str)
^
typedef.cpp: In function 'void ChangeCat(char (*)[5])':
typedef.cpp:22:17: error: cannot convert 'char (*)[5]' to 'char*' for argument '1' to 'char* strcat(char*, const char*)'
strcat(strp,"3");
^
typedef.cpp: In function 'int main()':
typedef.cpp:30:29: error: 'ChangeRtn' was not declared in this scope
Name test2 = ChangeRtn(test);
^
由於'Change'修改它給數組,爲什麼它需要返回什麼? – Barmar
對於固定大小的,可以在C++中使用'std :: array'。 'std :: string'也很方便。 – iammilind