将strcpy与字符串一起使用?

时间:2017-04-02 13:59:00

标签: c++

我无法弄清楚如何在字符串中存储空格的输入,所以我先将它存储在char中,然后将其复制到字符串中。

string name[2]={"Sample name"};
char apname[50];

cout << "Input Name: ";
cin.getline(apname,sizeof(apname));
strcpy (apname,name[2]);

如果有更简单的方法可以帮助我。

2 个答案:

答案 0 :(得分:1)

这是更好的方法:

std::string line;
std::getline(std::cin, line);
std::cout << "You said: " << line << "\n";

通过错误检查,提示和重复,它将是:

for (std::string line;
     (std::cout << "Input name: ") && std::getline(std::cin, line); )
{
    std::cout << "You said: " << line << "\n";
}
std::cout << "Goodbye\n";

答案 1 :(得分:1)

除了跳过空格的运算符<<之外,C ++标准库还为字符串提供了std::getline函数重载。改为使用它:

std::string name;
std::getline(cin, name);

您调用的函数

strcpy(apname, name[2]);
由于以下几个原因,

不正确:

  • 您无法将字符直接复制到string
  • name[2]在两个项目的数组上引用了一个超出数组末尾的项目。