gpt4 book ai didi

C++:cin.getline - 没有重载函数的实例

转载 作者:行者123 更新时间:2023-11-28 02:08:56 27 4
gpt4 key购买 nike

我正在尝试将一行文本写入 .txt 文件,但 visual studio 2015 出现以下错误。

Severity Code Description Project File Line Suppression State Error (active) no instance of overloaded function "std::basic_istream<_Elem, _Traits>::getline [with _Elem=char, _Traits=std::char_traits]" matches the argument list Studying c:\Users\Klaas\Documents\Visual Studio 2015\Projects\Studying\Studying\Studying.cpp 16

Severity Code Description Project File Line Suppression State Error C2664 'std::basic_istream> &std::basic_istream>::getline(_Elem *,std::streamsize,_Elem)': cannot convert argument 1 from 'std::string' to 'char *' Studying1 c:\users\klaas\documents\visual studio 2015\projects\studying1\studying1\studying1.cpp 16

我的源代码:

#include <iostream>
#include "stdafx.h"
#include <fstream>
#include <string>

using namespace std;
int main()
{
ofstream myFile;
string myText;
myFile.open("sometext.txt");
cout << "Write text to save to file: ";
cin.ignore();
cin.getline(myText, sizeof(myText));
myFile << myText;
myFile.close();
return 0;
}

我进行了多次搜索并找到了答案,例如包括

cin.ignore();

之上
cin.getline

,但我就是无法让它工作,而且我并不真正理解该错误的含义,而且我不明白为什么它认为我正在尝试将字符串转换为字符。

非常欢迎任何提示:)

最佳答案

您没有使用正确的功能。而不是 cin.getline() 你应该使用

std::getline(cin, myText)

cin.getline() 需要预分配的 char*,而您的 myText 不是。也很难以某种方式设法为 std::basic_istream::getline() 预分配足够长的缓冲区,因此此函数几乎从来没有用处。

关于C++:cin.getline - 没有重载函数的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36459267/

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