C++ 为什么我在使用getline()时遇到问题&引用;没有重载函数的实例与参数列表匹配;及;“数据不明确”;
我以前使用过这个函数,但是简单地复制并粘贴到另一个文件会导致它停止工作。唯一的变化是我添加了“使用名称空间std” 在我的“ReadData()”函数中,我在getline(cin,data)上得到一个错误,即重载函数的实例都不匹配参数列表。另外,我在通话中收到一个关于“数据”的错误,说“数据不明确。” 该函数应该从文本文件中读取数据,并将文本行存储在数据中以供进一步处理。这个函数是如何工作的,所以我不确定C++ 为什么我在使用getline()时遇到问题&引用;没有重载函数的实例与参数列表匹配;及;“数据不明确”;,c++,cin,getline,ambiguous,C++,Cin,Getline,Ambiguous,我以前使用过这个函数,但是简单地复制并粘贴到另一个文件会导致它停止工作。唯一的变化是我添加了“使用名称空间std” 在我的“ReadData()”函数中,我在getline(cin,data)上得到一个错误,即重载函数的实例都不匹配参数列表。另外,我在通话中收到一个关于“数据”的错误,说“数据不明确。” 该函数应该从文本文件中读取数据,并将文本行存储在数据中以供进一步处理。这个函数是如何工作的,所以我不确定 #include <iostream> #include "NvraArra
#include <iostream>
#include "NvraArray.h"
#include "NvraRecord.h"
#include <vector>
#include <string>
#include <ctime>
using namespace std;
// Globals
string data; // Stores the line that getline is at
vector<string> rows; // Stores the rows of data
vector<int> recordNumbersSeen; // Holds records numbers that have been checked
string strWords[24]; // Holds the individual columns of data for processing
int rowCounter = 0; // Counts the rows of data coming in
// Prototypes
// Reads the data from cin into the "rows" vector
void ReadData();
// Checks the current row against the list of records already seen
bool isDuplicate(int recordID);
// Checks the current row for invalid data
bool isValidData();
// Splits the row into an array to process
void SplitRowIntoArray(std::string row);
int main(){
// For testing purposes
srand(time(NULL));
NvraArray array;
NvraRecord record;
system("pause");
return 0;
}
void ReadData(){
while(getline(cin,data)){
// if on the first row, do nothing and skip to the next.
if(rowCounter != 0){
rows.push_back(data);
}else{
rowCounter++;
}
}
rowCounter = 0;
}
#包括
#包括“NvraArray.h”
#包括“NvraRecord.h”
#包括
#包括
#包括
使用名称空间std;
//全球的
字符串数据;//存储getline所在的行
向量行;//存储数据行
矢量记录编号见;//保存已检查的记录编号
字符串strWords[24];//保存要处理的单个数据列
int rowCounter=0;//对传入的数据行进行计数
//原型
//将数据从cin读入“行”向量
void ReadData();
//对照已看到的记录列表检查当前行
bool-isDuplicate(int-recordID);
//检查当前行中的无效数据
bool isValidData();
//将行拆分为要处理的数组
void splitrowintary(std::string行);
int main(){
//用于测试目的
srand(时间(空));
nvra阵列;
NvraRecord记录;
系统(“暂停”);
返回0;
}
void ReadData(){
while(getline(cin,data)){
//如果在第一行,什么也不做,跳到下一行。
如果(行计数器!=0){
行。推回(数据);
}否则{
行计数器++;
}
}
行计数器=0;
}
您与C++17引入的函数模板发生冲突。显然,您所包含的一个标准库头将包含到迭代器中
将全局变量重命名为非数据
可以解决此问题。您与C++17引入的函数模板发生冲突。显然,您所包含的一个标准库头将包含到迭代器中
将全局变量重命名为数据以外的其他变量可以解决此问题。这是一个不应该使用名称空间std代码>。您有名称冲突:字符串数据
与冲突
如果这还不足以说服您,请查看std
名称空间中其他一些名称的列表。如果使用使用名称空间std代码>,如果您碰巧包含正确的标题,这些名称中的任何一个都可能导致冲突。这是不应该使用命名空间std使用的主要示例代码>。您有名称冲突:字符串数据
与冲突
如果这还不足以说服您,请查看std
名称空间中其他一些名称的列表。如果使用使用名称空间std代码>,如果您碰巧包含正确的标题,这些名称中的任何一个都可能导致冲突。完全脱离主题,但看到全局变量以这种方式被滥用,我不寒而栗。请停止。如果您更改标题来描述问题(可能通过引用错误),那么标题将更有用,而不是破坏我的风格,请详细说明,以便我了解这是一个错误的原因?请发布一个。没有人知道什么是NvraRecord或NvraArray。还可以逐字复制和粘贴整个错误消息,而不是提供执行摘要。为什么对字符串使用数组,而对整数使用向量?您也可以对字符串使用向量
。完全脱离主题,但看到全局变量以这种方式被滥用,我不寒而栗。请停止。如果您更改标题来描述问题(可能通过引用错误),那么标题将更有用,而不是破坏我的风格,请详细说明,以便我了解这是一个错误的原因?请发布一个。没有人知道什么是NvraRecord或NvraArray。还可以逐字复制和粘贴整个错误消息,而不是提供执行摘要。为什么对字符串使用数组,而对整数使用向量?您也可以对字符串使用向量
。@LightnessRacesinOrbit作为非成员开始
/结束
函数的同级函数,它实际上是唯一有意义的名称。我同意由此产生的错误是令人讨厌的,但我怀疑在实践中给它起一个不同的名字会是一个更大的麻烦。@ComicSanss也许。我的意思是我能看到它从哪里来但是ugh@Fureeish实际上,它来自
,但是,与往常一样,您的特定stdlib实现可能会通过其他头包含它。结果会因平台而异。我的意思是,通过包含
,可以保证也包含
。我把我的第一句话写得很漂亮poorly@LightnessRacesinOrbit作为非成员的开始
/结束
函数的兄弟,它实际上是唯一有意义的名称。我同意由此产生的错误是令人讨厌的,但我怀疑在实践中给它起一个不同的名字会是一个更大的麻烦。@ComicSanss也许。我的意思是我能看到它从哪里来但是ugh@Fureeish实际上,它来自
,但是,与往常一样,您的特定stdlib实现可能会通过其他头包含它。结果会因平台而异。我的意思是,通过包含
,可以保证也包含
。我第一次评论的措辞非常糟糕