【发布时间】:2016-04-06 18:19:36
【问题描述】:
我正在尝试将一行文本写入 .txt 文件,但 Visual Studio 2015 出现以下错误。
严重性代码描述项目文件行抑制状态 错误(活动)没有重载函数实例“std::basic_istream<_elem _traits>::getline [with _Elem=char, _Traits=std::char_traits]”与参数列表匹配学习 c:\Users\Klaas\Documents\ Visual Studio 2015\Projects\Studying\Studying\Studying.cpp 16
和
严重性代码描述项目文件行抑制状态 错误 C2664 'std::basic_istream> &std::basic_istream>::getline(_Elem *,std::streamsize,_Elem)':无法将参数 1 从 'std::string' 转换为 '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
,但我就是无法让它工作,而且我真的不明白错误的含义,而且我不明白为什么它认为我正在尝试将字符串转换为字符。
非常欢迎任何提示:)
【问题讨论】:
-
它需要 char*,而不是字符串
-
sizeof(myText)不会像您认为的那样做。而是使用myText.size()。 -
我看到了,但我不确定如何让它期望一个字符串,我也不确定它首先是如何期望一个 char* :(
-
std::getline() 需要字符串,而不是 std::istream::getline()
-
@πάνταῥεῖ,不适用于 OP :)
标签: c++ visual-studio getline