c++: strcpy 不能使用 char 数组
Posted
技术标签:
【中文标题】c++: strcpy 不能使用 char 数组【英文标题】:c++: strcpy not working with char array 【发布时间】:2016-04-06 04:02:00 【问题描述】:我正在对一组名称进行排序,我的 IDE 给了我“没有匹配的函数来调用‘strcpy’。 以下是我设置的值:
char Names [MaxNames] [MaxCharsPerName + 1];
const int MaxNames (20);
const int MaxCharsPerName (15);
这是我的功能
void SortNames (const char Names[][MaxCharsPerName + 1], int NumNames)
int i;
int NumElements;
bool Sorted;
char Temp; // size 15?
NumElements = NumNames;
do
Sorted = true;
NumElements--;
for (i = 0; i < NumNames; i++)
if(Names[i-1] > Names[i])
strcpy(Temp, Names[i]);
strcpy(Names[i], Names[i+1]);
strcpy(Names[i+1], Temp);
while (!Sorted);
我必须使用参考吗?
哦,这些在顶部:
包括
using namespace std;
#include "Constants.h"
#include "Functions.h"
#include <string.h>
#include <stdio.h>
【问题讨论】:
如果您使用的是 C++,不如将std::string
用于字符串而不是 char []
,char []
是 C 的处理方式。然后参考下面@andreas-dm 的回答。
【参考方案1】:
char Temp; // size 15?
Temp
是 char
和 strcpy
需要 char *
(编译器会在您的情况下给出编译错误)。
改用char
数组-
char Temp[MaxCharsPerName + 1]; // any desired size but reserve place for '\0'
然后将其传递给strcpy
。
【讨论】:
哦,是的。好吧,我是这样设置的,但我得到了同样的错误。 @CalebLawrence 进行更改后您得到同样的错误? 我愿意,是的。它看起来像第一行 strcpy(Temp, Names[i]);工作,但其他人没有。可能是数组的问题。 @CalebLawrence 您的意思是在此处显示的代码的其他部分或在这些调用中。Names[i-1]
也令人担忧。你应该使用strcmp
来比较你的字符串(现在你只是比较字符串的指针)【参考方案2】:
对一组名称进行排序会更容易:
vector<string> names;
// ...
sort(begin(names), end(names), less<string>());
for (const auto& name : names) cout << name << '\n';
【讨论】:
以上是关于c++: strcpy 不能使用 char 数组的主要内容,如果未能解决你的问题,请参考以下文章
VS2013 C++中的strcpy用不了,说换成strcpy_s,还是出现错误了。