gpt4 book ai didi

c++ - 编译器无法识别 Getline

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:44 25 4
gpt4 key购买 nike

在使用 C 语言将近一年后,我才开始使用 C++。我正在为用户编写一个程序来输入有关歌曲的信息。我读到我应该使用 getline() 来读取带空格的字符串。这是我的代码:

#include <string>
#include <cstring>
#include <iostream>
using namespace std;

int main()
{
typedef struct Song
{
char title[20];
char album[20];
char artist[20];
int year;
} song;

//store song info
Song Input;
char inputStr[20];
int inputYear;
cout << "Enter the name of a song: ";
getline(cin, inputStr);
strcpy(Input.title, inputStr);
cout << "Enter the album of your song: ";
getline(cin, inputStr);
strcpy(Input.album, inputStr);
cout << "Enter the artist of your song: ";
getline(cin, inputStr);
strcpy(Input.artist, inputStr);
cout << "Enter the year your song was released: ";
cin >> inputYear;
Input.year = inputYear;

//print
cout << "Song title: " << Input.title << endl;
cout << "From album: " << Input.album << endl;
cout << "Artist: " << Input.artist << endl;
cout << "Released: " << Input.year << endl;
return 0;
}

我的编译器1 抛出 3 个错误,每个错误对应 getline()打电话,不认识getline()尽管我有 #include <string> .我查看了 getline() 的示例用法功能。

感谢您的帮助。

1我想知道这个问题是否与我的编译器支持的 C++ 标准有关。我做了一些研究,但没有发现任何可以帮助我了解我正在使用的标准的东西。这里有一些信息:

我在 Mac 上使用终端。在g++ version之后:

Configured with: --prefix=/Applications/Xcode.app/Cont.../usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)

这些行似乎是这里唯一使用的行,但我可以提供更多信息。如果有人知道这是哪个 C++ 标准,无论是 C++11、C++14 还是其他,那也会非常有帮助。再次感谢。

更新:从头开始,尝试尽可能多地采纳您的建议,同时仍然坚持我所知道的一些知识。没有错误,正如我所希望的那样工作。感谢你的帮助。新代码:

#include <string>
#include <cstring>
#include <iostream>
using namespace std;

struct Song
{
string title;
string artist;
string album;
string year;
}song;

int main()
{
Song Input;
cout << "Song? ";
getline(cin, Input.title);
cout << "Artist? ";
getline(cin, Input.artist);
cout << "Album? ";
getline(cin, Input.album);
cout << "Year? ";
getline(cin, Input.year);

cout << "Song: " << Input.title << endl;
cout << "Artist: " << Input.artist << endl;
cout << "Album: " << Input.album << endl;
cout << "Year: " << Input.year << endl;
return 0;
}

最佳答案

您使用的 getline 版本将 std::string 作为参数,而不是 char 数组。如果你想使用 char 数组(你不应该),你需要使用成员函数版本:

    cin.getline( some_char_array, array_size );

关于c++ - 编译器无法识别 Getline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45017426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com